我在 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 的原因可能是什么?
最佳答案
在没有看到代码的情况下,我的猜测是您的函数声明(在 header 中)与定义(在源文件中)不一致。
关于C: 函数调用不同模块后传递的参数为 NULL 的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/802903/