从API返回字符串文字

Mar*_* A. 5 c++ string api

我正在编写用户API,以这种方式返回const char*值是否正确?

const char * returnErrorString(int errorCode)
{
   switch(errorCode)
    ...
   return "This error code means that...";
}
Run Code Online (Sandbox Code Playgroud)

我不喜欢以这种方式返回字符串文字但是在由于RVO优化而被用户读取之前不应该销毁它们,这是正确的吗?有什么建议吗?

mas*_*oud 6

没关系.

字符串文字在程序生命期间具有固定地址.您可以将其地址作为指向任何地方的指针传递.程序存活时,字符串文字不会被破坏.

只是尽量不要修改它们来调用未定义的行为.根据§2.14.5:"尝试修改字符串文字的效果未定义."