C中函数的隐式声明
Posted
技术标签:
【中文标题】C中函数的隐式声明【英文标题】:Implicit declaration of function in C 【发布时间】:2016-08-10 13:17:05 【问题描述】:是否有任何版本的 C 或任何不允许隐式声明函数的编译器?
例如。使用 mingw 编译器,如果我在我的程序中使用 printf 函数而不包含 stdio.h,它会编译我的程序,并显示警告“内置函数‘printf’的隐式声明不兼容”。
我想知道是否有某些版本的 C 或某些编译器在这些情况下无法编译我的程序。
最好的问候。
【问题讨论】:
为什么不看看各种编译器可用的各种选项?大多数允许您将警告作为错误 使用-Werror
,代码不会编译。
1999 年的标准取消了隐式 int
,因此使用 -std=c99 -Werror
进行编译应该会捕获任何隐式声明。
这很有趣。但是,我仍然对原始问题感兴趣。是否有任何编译器在其标准操作中不编译具有隐式声明的程序?
编译器已为您发出诊断。忽略此诊断意味着程序将具有未定义的行为。除非您从不打算更改编译器或升级您的编译器,否则应将警告视为错误。
【参考方案1】:
您可以在编译代码时使用-Werror
编译器选项。它将所有警告视为error
。我喜欢使用这些选项编译我的源代码。
gcc -Wall -Werror -Wshadow -Wextra SOURCE.c -Wfloat-equal
【讨论】:
【参考方案2】:编译时使用-Werror
选项,所有警告都将被视为错误。
【讨论】:
以上是关于C中函数的隐式声明的主要内容,如果未能解决你的问题,请参考以下文章