1

私はCプログラムで奇妙な振る舞いをしています。foo.cというファイルで、次のシグネチャを持つ関数にいくつかの引数を渡します。

foo (char *first, size_t a, size_t b, size_t c, char *last);

ここで、foo.hを含む別のCファイルからこの関数を呼び出すと、たとえば次のようになります。

foo("first value", 1, 2, 3, "last value");

fooでは、最初にa、b、cが正しいですが、最後は常にNULLです。最後のパラメーターとして使用するタイプの種類や、この関数をどこから呼び出すかは関係ありません(以前の操作がなくてもmainで直接使用する場合でも)。ファイルはコンパイルされ、1つの実行可能ファイルにリンクされます。foo()を、それが呼び出された場所から同じソースファイルに入れると、すべてが機能します。

関数が外部委託されたときに最後のパラメーターがNULLである理由は何でしょうか?

4

2 に答える 2

2

コードを見ないと、(ヘッダー内の) 関数宣言が (ソース ファイル内の) 定義とは異なっていると思います。

于 2009-04-29T15:35:45.357 に答える