如何让gcc警告未知功能?

时间:2012-07-30 16:08:54

标签: c linux gcc

考虑以下代码:

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

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

这段代码片段使用gcc编译成对象代码没有问题,尽管事实上没有声明名为'helper'的函数。我知道链接器应该捕获这个,但是我已经看到了模糊的bugs,一旦包含正确的头文件(包含函数声明)就解决了,尽管链接器和编译器没有生成任何错误。

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

有人可以提出替代方案吗?谢谢。

2 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:4)

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