如何让gcc警告未知函数?

5

考虑下面的代码:

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

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

这段代码使用gcc编译为目标代码时没有问题,尽管名为“helper”的函数未被声明。我知道链接器应该会捕捉到这个问题,但我曾经遇到过一些晦涩的错误,当包含了函数声明的正确头文件后,这些错误就消失了,尽管链接器和编译器都没有生成任何错误。
有许多警告与gcc相关,看起来与我想要的有关,但它们实际上并没有达到我想要的效果:-Wmissing-prototypes、-Wmissing-declarations和-Wstrict-prototypes。不幸的是,这些警告仅限于全局函数定义时缺少原型,我感兴趣的是在全局函数引用时缺少原型的警告。
有人能提供替代方案吗?谢谢。
2个回答

11

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

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


1
这是通过使用-Wall(您应该始终使用)和使用-std=c99来实现的。 - ext

4
使用-Wl,--no-undefined来确保强制出现未定义函数错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接