【问题标题】:Implicit declaration of function in CC中函数的隐式声明
【发布时间】:2016-08-10 13:17:05
【问题描述】:

是否有任何版本的 C 或任何不允许隐式声明函数的编译器?

例如。使用 mingw 编译器,如果我在我的程序中使用 printf 函数而不包含 stdio.h,它会编译我的程序,并显示警告“内置函数‘printf’的隐式声明不兼容”。

我想知道是否有某些版本的 C 或某些编译器在这些情况下无法编译我的程序。

最好的问候。

【问题讨论】:

  • 为什么不看看各种编译器可用的各种选项?大多数允许您将警告作为错误
  • 使用-Werror,代码不会编译。
  • 1999 年的标准取消了隐式 int,因此使用 -std=c99 -Werror 进行编译应该会捕获任何隐式声明。
  • 这很有趣。但是,我仍然对原始问题感兴趣。是否有任何编译器在其标准操作中不编译具有隐式声明的程序?
  • 编译器已为您发出诊断。忽略此诊断意味着程序将具有未定义的行为。除非您从不打算更改编译器或升级您的编译器,否则应将警告视为错误。

标签: c compilation compiler-errors compiler-warnings


【解决方案1】:

您可以在编译代码时使用-Werror 编译器选项。它将所有警告视为error。我喜欢使用这些选项编译我的源代码。

gcc -Wall -Werror -Wshadow -Wextra SOURCE.c -Wfloat-equal

【讨论】:

    【解决方案2】:

    编译时使用-Werror选项,所有警告都将被视为错误。

    【讨论】:

      猜你喜欢
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多