ルック:なぜ空のwchar_tリテラルが許可されていますか?次のコードで
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;
}
はなぜコンパイラは、ワイド文字にリテラル空文字を定義することができませんか?これは、コンパイラがエラーにフラグを付けるchar
の意味がないのと同じように、広い意味を持ちません。
標準によって許可されていますか?
gcc 4.6.0は両方のステートメントを拒否します。 – pmr