<< 2008/08/ 1 2 3 4 1. 帰省 2. 読者プレゼント 5 1. [映画] アイ・アム・レジェンド 6 1. 夏休み 2. 山口ちょうちん祭 7 1. 松江帰還 2. 読者プレゼント受付 3. 瀕死のPrius 8 1. [Ruby] Ruby合宿 2. 当選発表 9 1. [映画] どろろ 10 11 12 13 14 15 16 17 18 1. 出発準備 2. フィード削減 3. 妻のブログ 19 1. 東京 20 1. 三鷹ジブリの森美術館 2. Ruby Academy開講記念セミナー 21 1. U20プロコン審査委員会 22 23 24 25 26 1. 航空券手配 2. [言語]シーケンス述語 3. [言語] Lisp, the Universe and Everything: Re: An Acceptable Lisp 4. ぎっと 27 1. e-T
C の関数呼び出しは、関数定義の型と互換性のない型として呼び出したら未定義動作です。例えば以下のコードの動作は未定義です。 #include <stdio.h> int main(void) { ((int (*)(char *, ...)) &printf)("Hello, world!\n"); } printf は int printf(const char *, ...) なので、const が無くなってるのが間違ってます。未定義のプログラムはどのような実行結果になろうとも、C の規格には違反しません。 でも、現実問題としてこのコードは期待通りに動くだろー、と高をくくってました。しかし最近の gcc (3.4 以降くらい) では、このコードは落ちます。 $ gcc --version gcc (GCC) 4.3.1 Copyright (C) 2008 Free Software
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く