GCC 如何阻止 ROM 中函数的隐式函数声明误报警告?

use*_*607 6 c microcontroller gcc

我想摆脱代码库中的所有隐式函数声明警告。但存在一个问题,因为某些函数在工厂时已编程到微控制器 ROM 中,并且在链接期间链接器脚本仅提供函数地址。这些函数由 SDK 中的代码调用。

在编译过程中,gcc 当然会发出警告implicit-function-declaration。我怎样才能摆脱这个警告?

需要明确的是,我理解为什么会出现警告以及它的含义。但在这种特殊情况下,SDK 的开发人员保证代码将按照隐式规则运行(即隐式函数仅接受 int 并返回 int)。所以这个警告是误报。

这只是 gnu-C-99,不是 c++。

想法:

  • 猜猜参数类型,在标题中写一个原型并包含它?
  • 告诉 gcc 使用某些 gcc 属性将此类函数视为误报?

Pie*_*ths 8

您可以在标头中创建原型函数,或使用以下命令抑制警告:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wimplicit-function-declaration"
/* line where GCC complains about implicit function declaration */
#pragma GCC diagnostic pop
Run Code Online (Sandbox Code Playgroud)