Data:C direttiva #error e commenti
#error /*
*/ foo
Microsoft C++ uscite un messaggio di errore di /*
e GCC uscite foo
.
Quale è corretto?
Data:C direttiva #error e commenti
#error /*
*/ foo
Microsoft C++ uscite un messaggio di errore di /*
e GCC uscite foo
.
Quale è corretto?
GCC è corretto.
La sostituzione dei commenti (comprese le interruzioni di riga) avviene nella fase di traduzione 3, pre-elaborazione nella fase di traduzione 4 (ISO/IEC 9899: 1999, §5.1.1.2).
Quindi, la parte di pre-elaborazione del compilatore non "vede" più le interruzioni di linea.
E, #error
è definito come questo (§6.10.5):
Una direttiva al preprocessore della forma
# error pp-tokens_opt new-line
fa sì che l'attuazione di produrre un messaggio di diagnostica che comprende la specificato sequenza di token di preelaborazione.
Quindi, il foo
deve essere parte dell'output.
GCC è corretto perché deve essere sostituito da uno spazio singolo / * ... * /
nello standard.
"Microsoft C++" è un compilatore C? –