Mira el siguiente código:¿Por qué se permite un literal wchar_t vacío?
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;
}
¿Por qué el compilador permiten definir un vacío carácter literal de caracteres anchos? Esto no tiene sentido para wide, al igual que no tiene sentido para char
donde el compilador señala un error.
¿Esto está permitido por la norma?
gcc 4.6.0 rechaza ambas declaraciones. – pmr