在我认为符合 C++11 标准的 MSVS2013 中,编译器不喜欢以下内容:
LPCTSTR str = _T("boo " "hoo");
这意味着:
wchar_t const * str = L"boo " "hoo";
根据 cppreference.com (我知道这不是确定的,但这是我目前唯一的引用资料):
重点是我自己。
任何人都可以确认这是否在 cppreference 指示的标准中?
编辑
不喜欢,我的意思是我收到以下错误:
error C2308: concatenating mismatched strings
最佳答案
2003 ISO C++ 标准第 2.13.4p3 节说:
2011 年标准第 2.14.5p13 节说:
因此序列 L"boo " "hoo"
在 C2003 中具有未定义的行为,但在 C2011 中定义良好且等效于 L"boohoo"
。
我无法从您提供给我们的信息中判断 MSVS2013 是否符合 C++11。你说它“不喜欢”这个结构,但如果不喜欢被表达为非致命警告并且语义符合 2011 标准中的规定,那么它可能是符合的。
您能否更新问题以显示诊断消息?
关于c++ - 当前缀字符串与非前缀字符串相邻时,字符串文字连接失败?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20687283/