Я всегда стараюсь не возвращать строковые литералы, потому что я боюсь, что они не определены вне функции. Но я не уверен, что это так. Возьмем, например, эту функцию:
const char *
return_a_string(void)
{
return "blah";
}
Это правильный код? Он работает для меня, но, возможно, он работает только для моего компилятора (gcc). Итак, вопрос в том, имеют ли (string) литералы рамки или они присутствуют/определены все время.