c - 如果我不包含头文件会发生什么

标签 c header

如果我在运行 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/

相关文章:

c - recv 不要在客户端套接字 close() 上向我发送 -1

c - 已定义但未用于整个项目的变量

php - 我应该使用哪些 header 来提供静态内容?

C++头文件——语法问题

html - 缩放页面上的标题

C++ 在文件级别创建作用域

通过 malloc 和 getchar() 创建字符串

c - 为什么 bsearch 返回 void *?

C 温度转换程序保持输出 0 华氏度到摄氏度

c - printf 在这里做了什么?