gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:35:07 27 4
gpt4 key购买 nike

我奇怪地发现 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);
}

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

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

最佳答案

正确使用头文件。
配置您的编译器以发出尽可能多的警告。
注意警告!

add.h

#ifndef ADD_H_INCLUDED
#define ADD_H_INCLUDED
int add(int a, int b, int c);
#endif

add.c

#include "add.h"
int add(int a, int b, int c) {
return a + b + c;
}

文件.c

#include "add.h"
void foo() {
add(1, 2);
}

关于在 C 中使用较少数量的参数调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30346141/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com