私はCプログラムで不思議な動作をしました。例えば、今、私はfoo.hというを含む別のCファイルからこの関数を呼び出すときC:渡されたパラメータが、別のモジュールへの関数呼び出しの後にNULLになる理由
foo (char *first, size_t a, size_t b, size_t c, char *last);
:私はfoo.cをというファイルに次のシグネチャを持つ関数への数引数を渡します:最初のfooで
foo("first value", 1, 2, 3, "last value");
、A、B、Cは正しいですが、最後は常にNULLです。 私は最後のパラメータとしても、私がこの関数を(以前の操作なしでメインで直接でも)呼び出す場所からどのような種類の型を使用しても問題ありません。 ファイルはコンパイルされ、1つの実行可能ファイルにリンクされます。 foo()を同じソースファイルに置くと、どこから呼び出されたのかが分かります。
誰かが、関数がアウトソースしたときに最後のパラメータがNULLである理由が何であるか考えていますか?
foo.hの署名は何ですか? – dsm
コードを表示してください。あなたはなぜlastがnullだと思いますか?あなたはそれをリテラルに渡しているようです。 – tpdi
foo.hの関数プロトタイプが正しいことを保証しましたか? – Noldorin