int main(void)
{
#if 0
something"
#endif
return 0;
}
Un semplice programma sopra genera un avviso: missing terminating " character
in gcc. Questo sembra strano, perché significa che il compilatore consente che i blocchi di codice tra #if 0
e endif
abbiano una dichiarazione non valida come something
qui, ma non le doppie virgolette "
che non si accoppiano. Lo stesso accade nell'uso di #ifdef
e #ifndef
.I blocchi di codice tra #if 0 e #endif devono avere virgolette doppie accoppiate?
Commenti reali sono bene qui:
int main(void)
{
/*
something"
*/
return 0;
}
Perché? E la singola citazione '
si comporta allo stesso modo, ci sono altri token che stanno trattando in modo speciale?
Quale compilatore? –
@ IgnacioVazquez-Abrams Ho usato un gcc online per testare http://www.compileonline.com/compile_c_online.php –
Impossibile riprodurre questo problema con clang (Apple LLVM versione 4.2 (clang-425.0.28) o gcc (i686- apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1) –