如果我在运行 c 程序时不包含头文件,会发生什么情况?我知道我收到警告,但程序运行完美。
我知道头文件包含函数声明。因此,当我不包括它们时,编译器如何计算出来?它会检查所有的头文件吗?
最佳答案
I know that I get warnings, but the programs runs perfectly.
这是前 ANSI C 的一个不幸遗留问题:该语言不需要函数原型(prototype),因此标准 C 直到今天都允许它(通常,可以产生警告以查找没有原型(prototype)调用的函数)。
当你调用一个没有原型(prototype)的函数时,C 编译器会对被调用的函数做出假设:
- 函数的返回类型假定为
int
- 假定声明了所有参数(即没有
...
可变参数) - 所有参数都假定为您在默认促销后传递的任何参数,依此类推。
如果在没有原型(prototype)的情况下被调用的函数符合这些假设,您的程序将正确运行;否则,它是未定义的行为。
关于c - 如果我不包含头文件会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241313/