我有两个文件.
第一个文件包含函数原型,main函数只用一个参数调用myfunc:
int myfunc (int x);
int main ()
{
int x =5;
myfunc(x);
}
Run Code Online (Sandbox Code Playgroud)
第二个文件包含函数定义但有2个参数:
int myfunc (int x, int y)
{
return x+y;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用GCC编译这两个文件时,我没有收到任何错误或警告.
如何强迫海湾合作委员会警告这样的事情?
将原型放在头文件中,并将#include头文件放在使用这些函数的所有源文件中.
GCC独立编译每个文件,因此它不能知道函数的定义与声明不对应,除非声明也包含在带有定义的文件中.
它应该如下所示:
#ifndef MYFUNC_H
#define MYFUNC_H
int myfunc (int x);
#endif
Run Code Online (Sandbox Code Playgroud)
#include "myfunc.h"
int myfunc (int x, int y)
{
return x+y;
}
Run Code Online (Sandbox Code Playgroud)
#include "myfunc.h"
int main ()
{
int x =5;
myfunc(x);
}
Run Code Online (Sandbox Code Playgroud)