アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
身近な人の偉大さは半減する -- あるアレゲ人
ソースコードの書き方にも問題がある. (スコア:4, 興味深い)
grubがコンパイラのバグという地雷を踏んだ理由の一つとして
そのソースコードの書き方にも原因があると思います.
grubの該当するソースコードは,関数の中で関数を定義するという妙な記述をしています.
これは,一般的なC言語の文法上はエラーになるので,めったに利用されない
Re:ソースコードの書き方にも問題がある. (スコア:3, 興味深い)
それはそれで問題あると思うのですが、IA32プラットフォームでそういうのをコンパイルしたとき、スタック上に実行コードを乗っけて、そこに分岐する、という野蛮な実装は他の CPU ではどういうコードに落ちるんでしょう。
(私の
Re:ソースコードの書き方にも問題がある. (スコア:0)
> コンパイルしたとき、スタック上に実行コードを乗っけて、そこに分岐する、
> という野蛮な実装は他の CPU ではどういうコードに落ちるんでしょう。
関数の中で関数を定義しても、スタック上に実行コードなんて生成されましたっけ?。単にテキストセグメントに展開されて、関数のエントリの名前空間がブロック内に限定されるだけなのでは?
-S オプションつけて、アセンブラに落ちたコードをみれば分かると思います。
よって、これが原因というより、本質的には他の場所にバグがあるということでは(関数の中に関数を定義した時のパーサーに不具合があるというのはあるかもしれないけど...)?
Re:ソースコードの書き方にも問題がある. (スコア:0)
{
void inner() {}
printf("%p\n", inner);
}
コンパイルしてアセンブリ見てみ。