我在 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 first 中,a、b、c 是正确的,但 last 始终为 NULL。我使用哪种类型作为最后一个参数或从哪里调用此函数(即使直接在 main 中没有任何先前的操作)都没有关系。这些文件在一个可执行文件中编译并链接在一起。当我将 foo () 放在同一个源文件中时,一切正常。
有谁知道当函数外包时最后一个参数为 NULL 的原因可能是什么?