【问题标题】:How to make gcc warn about unknown functions?如何让 gcc 警告未知功能?
【发布时间】:2012-07-30 16:08:54
【问题描述】:

考虑这段代码:

int function()
{
  int a = 1 ;
  int b = helper(&a);
  return b ;
}

int main()
{
  function();
  return 0 ;
}

这段代码 sn-p 使用 gcc 编译为目标代码没有问题,尽管事实上名为 'helper' 的函数尚未声明。我知道链接器应该捕捉到这一点,但我看到模糊的bugs 一旦包含正确的标头(包含函数声明)就解决了,尽管链接器和编译器没有产生任何错误。

有许多 gcc 警告似乎相关但实际上并没有达到我想要的效果:-Wmissing-prototypes、-Wmissing-declarations 和 -Wstrict-prototypes。不幸的是,这些警告仅限于在定义全局函数时丢失原型,我对引用全局函数时有关丢失原型的警告感兴趣。

任何人都可以提出替代方案吗?谢谢。

【问题讨论】:

    标签: c linux gcc


    【解决方案1】:

    您想要-Wimplicit-function-declaration 警告。

    就个人而言,我更喜欢使用-Wall -Wextra 编译我的代码。

    【讨论】:

    • 是的!这就是我想要的:)
    • 这是由 -Wall(您应该始终使用)和使用 -std=c99 时启用的。
    【解决方案2】:

    使用-Wl,--no-undefined 确保出现强制undefined function 错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      相关资源
      最近更新 更多