C: 函数调用不同模块后传递的参数为 NULL 的原因

标签 c null callstack

我在 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/

相关文章:

c# - 有关 Vault.dll 和 Vaultcli.dll 的信息

c - 如何编写一个递归函数来返回 BST 中的最小值?

Typescript - 将 null 分配给变量

python - 具有 Null 值的平均数组

c - 用于从本地存储库 git 获取可执行文件的 Python 脚本

c - malloc 一个 char 数组

scala - 合并 Spark 数据框中的列

c++ - 如何确定调用堆栈结束?

python - 从调用者的角度发出警告(又名 Python 等同于 Perl 的鲤鱼)?