调用没有原型的C函数

Wil*_*lma 3 c function function-prototypes

我有一个file1.c调用函数的C文件(比方说) fun1(1,b).

这个函数fun1(int a,int b)驻留在另一个C文件中(比方说file2.c),但它的原型不包含在头文件中(比方说file2.h). file2.h包括在内file1.c.

我的问题是,如果我打电话fun1(a,b)file1.c,它会通过将控制传递给函数定义file2.c吗?或者是否会发生异常或预期的行为是什么?

我一定要给出一个原型fun1(int a, int b)file2.h这个工作?

小智 5

根据情况和编译器,可能会发生一些事情:

  • 您收到编译错误.编译器抛出武器并拒绝生成目标文件.
  • 编译器将函数声明视为调用所暗示的并继续进行链接.它可能假设你知道你在函数参数方面做了什么.通常它也假定为int返回类型.几乎我使用的每个编译器都会在执行此操作时发出警告.
  • 编译器将声明视为调用所暗示但未能链接.像上面一样,但链接器然后注意到你试图调用的隐含函数和你实际编写的函数是不同的并且死了.

无论如何,你应该提供原型.