gcc函数调用语句,用于调用者/被调用者中的不匹配签名

时间:2010-11-08 19:50:28

标签: c gcc

我在gcc中发现了一些奇怪的东西,并希望得到一些输入,无论是功能还是怪癖  基本上我有一个在func.c中定义的函数

void f(int a, int b, FILE* f)  
{  
   ...  
   ...  
} 

没有相应的头文件。但是当我调用f(a,b)时gcc没有给出任何警告,gdb告诉我用三个参数调用f? 为什么会这样?填充第三个参数的语义是什么。

1 个答案:

答案 0 :(得分:4)

如果f()在任何地方没有声明且未在当前编译单元中定义,则编译器假定f()返回int并且可以接受任意数量的参数。< / p>

我知道这很奇怪,但在过去,这可能是一种减少必须包含的头文件数量的方法,因此可以加快编译速度。