我正在编写用户API,以这种方式返回const char*值是否正确?
const char * returnErrorString(int errorCode)
{
switch(errorCode)
...
return "This error code means that...";
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢以这种方式返回字符串文字但是在由于RVO优化而被用户读取之前不应该销毁它们,这是正确的吗?有什么建议吗?
没关系.
字符串文字在程序生命期间具有固定地址.您可以将其地址作为指向任何地方的指针传递.程序存活时,字符串文字不会被破坏.
只是尽量不要修改它们来调用未定义的行为.根据§2.14.5:"尝试修改字符串文字的效果未定义."