小编Viv*_*wal的帖子

在C中调用具有较少数量参数的函数?

我奇怪地发现C允许链接参数列表不匹配的函数:

//add.c
int add(int a, int b, int c) {
    return a + b + c;
}
//file.c
int add (int,int); //Note: only 2 arguments
void foo() {
    add(1,2);
}
Run Code Online (Sandbox Code Playgroud)

我首先编译了add.c,然后编译了file.c,两者都编译成功.奇怪的是,链接器没有给出任何类型的错误或警告,可能原因是C链接器在链接时不比较参数.我不是100%肯定它.有人请对此发表评论.

现在,问题是在编译期间避免这种情况或得到某种警告的好习惯是什么,因为在我的项目中,在不同的文件中有很多函数,现在我们必须在函数中添加一些额外的参数.

c arguments argument-passing

2
推荐指数
3
解决办法
93
查看次数

标签 统计

argument-passing ×1

arguments ×1

c ×1