2012-07-30 58 views
5

考虑以下代码:如何让gcc提醒未知功能?

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

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

这段代码编译为对象而不使用gcc问题代码,尽管所谓的“帮手”的功能尚未宣布这一事实。我知道链接程序应抓住这一但我已经看到模糊的bugs从而解决了一次正确的头(包含函数的声明)都包括在内,尽管连接器和编译器不产生任何错误。

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

任何人都可以提出其他建议?谢谢。

回答

11

你想-Wimplicit-function-declaration警告。

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

+0

是的!这就是我想要:) – 2012-07-30 16:14:16

+1

这是通过-Wall(你应该经常使用),并使用-std = C99时启用。 – ext 2012-07-30 16:15:45

+0

@ext yep,这就是'man gcc'所说的。 – 2012-07-30 16:16:46

4

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

+0

这是一个链接器选项? – 2012-07-30 16:13:38

+0

@GearoidMurphy:是的。 – Jack 2012-07-30 16:46:16