2005年 01月27日(Thu) [長年日記]
!!!new!!!_ 何故か仕事でC言語っぽい*1プログラム言語をさわる機会が多いのですが、最近も「C言語を独自拡張した」あるプログラム言語を触っていたりします。
*1 Cに似ているがCにあらず
!!!new!!!_ ベースはC言語だといっても違う言語には間違いないので、専用のコンパイラを使ってコンパイルするわけなのですが、ふと標準ライブラリのとある関数の仕様があいまいだったので質問を送ってみました。
私:「この関数の引数pにNULLを指定したらどうなりますか?」
!!!new!!!_ で、今日来た回答。
!!!new!!!_ …ほへ?(´д`;) それは次のうちどっちの意味なんですか?
- 担当者はNULLがアドレスの0番地を示すものだと勘違いしている。
- このコンパイラではNULLは無効なアドレスを示す内部表現に変換されない。
!!!new!!!_ まあ、C言語じゃないから2.の可能性も高い*1 わけですが。でも標準ヘッダを見ると「#define NULL ((void*)0)」とか書かれている訳で。もし2.だったら普通NULLは定義しないですよね。はてさて、どうなんでしょ?
*1 もしそうだとするとNULLチェックできないじゃん(^^;
!!!new!!!_ C言語はある程度分かるけど、NULLって良く分からないんだよねって人はC FAQ 5とか見るべし。
[ツッコミを入れる]