アカウント名:
パスワード:
gccであることをいいことに、Cでも//でコメントアウトしてます。ごめんなさい(懺悔)
C99で//はコメント開始と規定されていますので問題なし!
# でも真面目な話、2011年現在で//から始まるコメントはCでないと言っちゃうのは勉強不足かと・・・# コンパイラの実装とは別にCもC++も規格は変化(進化とも退化ともいわん)していってますので。
>C99もC89の上位互換だけど
違います。例えば、
printf("%d\n", 10 //* 2 */ 2);
は、C99でもC89でも正しい構文だけど、結果は異なりますよね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
物事のやり方は一つではない -- Perlな人
どこまでが笑い話・都市伝説なのか… (スコア:1, 興味深い)
究極的には 「// でコメントアウトできる C」みたいな…
Re: (スコア:0)
gccであることをいいことに、Cでも//でコメントアウトしてます。ごめんなさい(懺悔)
Re: (スコア:0, 既出)
C99で//はコメント開始と規定されていますので問題なし!
# でも真面目な話、2011年現在で//から始まるコメントはCでないと言っちゃうのは勉強不足かと・・・
# コンパイラの実装とは別にCもC++も規格は変化(進化とも退化ともいわん)していってますので。
Re:どこまでが笑い話・都市伝説なのか… (スコア:3, 参考になる)
C++はC99の上位互換ではなく成っちゃうからなぁ
C++はほぼC89の上位互換でC99もC89の上位互換だけど
現在のC++とC99の互換性ってかなりなくなってるよね
struct foo {
int x;
int y;
} hoge = { .x = 0, .y = 1, };
なんてC++では不正な文法になるし
extern void foo( struct foo* p );
の関数に大して
foo( &((struct foo){ 0, 1 }) )
もC++的には不正だし
Re: (スコア:0)
>C99もC89の上位互換だけど
違います。例えば、
printf("%d\n", 10 //* 2 */ 2
);
は、C99でもC89でも正しい構文だけど、結果は異なりますよね。