2012-07-30 80 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