int main(void)
{
#if 0
something"
#endif
return 0;
}
missing terminating " character
上記の単純なプログラムは、gccで警告を生成します。これは奇妙に思えます。これは、コンパイラがコード ブロックとの間のコード ブロックを許可し、#if 0
ここのendif
ように無効なステートメントがあることを意味するためですが、ペアにならない二重引用符は許可しないためです。と を使用しても同じことが起こります。something
"
#ifdef
#ifndef
実際のコメントはここで問題ありません:
int main(void)
{
/*
something"
*/
return 0;
}
なんで?一重引用符'
も同様に動作しますが、特別に扱っている他のトークンはありますか?