5

考虑这段代码:

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

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

尽管没有声明名为“helper”的函数,但此代码片段使用 gcc 可以毫无问题地编译为目标代码。我知道链接器应该捕捉到这一点,但是我看到了一些模糊的错误,一旦包含正确的标头(包含函数声明),这些错误就会解决,尽管链接器和编译器没有产生任何错误。

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

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

4

2 回答 2

11

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

就个人而言,我更喜欢使用-Wall -Wextra.

于 2012-07-30T16:13:26.467 回答
4

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

于 2012-07-30T16:11:28.440 回答