Mar*_* Ba 12 c++ character literals
看下面的代码:
int main(int argc, char* argv[])
{
// This works: (Disable Lang Ext = *Yes* (/Za))
wchar_t wc0 = L'\0';
wchar_t wc_ = L'';
assert(wc0 == wc_);
// This doesn't compile (VC++ 2010):
char c0 = '\0';
char c_ = ''; // error C2137: empty character constant
assert(c0 == c_);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么编译器允许为宽字符定义空字符文字?这对宽度没有意义,就像char编译器标记错误的位置没有意义一样.
标准是否允许这样做?