2012-07-30 3 views
5

Betrachten Sie diesen Code:Wie mache ich gcc warnen über unbekannte Funktionen?

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

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

Dieser Code-Schnipsel kompiliert, trotz der Tatsache, mit gcc-Code ohne Problem zu widersprechen, dass die Funktion ‚Helfer‘ genannt wurde nicht deklariert. Ich weiß, dass der Linker dies abfangen sollte, aber ich habe obskure bugs gesehen, die aufgelöst wurde, sobald die richtigen Header (die die Funktionsdeklarationen enthielten) enthalten waren, obwohl der Linker und der Compiler keine Fehler erzeugten.

Es gibt eine Reihe von GCC-Warnungen, die scheinbar verwandt sind, aber nicht wirklich erreichen, was ich will: -Wissing-Prototypen, -Wissing-Deklarationen und -Westrik-Prototypen. Leider sind diese Warnungen auf fehlende Prototypen beschränkt, wenn globale Funktionen definiert sind, ich interessiere mich für Warnungen über fehlende Prototypen, wenn globale Funktionen sind verwiesen.

Kann jemand Alternativen vorschlagen ?, danke.

Antwort

11

Sie möchten -Wimplicit-function-declaration Warnung.

Persönlich bevorzuge ich kompilieren meinen Code mit -Wall -Wextra.

+0

Ja !, das ist die, die ich will :) –

+1

Dies wird aktiviert durch -Wall (die Sie immer verwenden sollten) und bei Verwendung von -std = c99. – ext

+0

@ext yep, das sagt 'man gcc'. –

4

Verwenden Sie -Wl,--no-undefined, um einen erzwungenen undefined function Fehler sicherzustellen.

+0

Dies ist eine Linker-Option? –

+0

@GearoidMurphy: Ja. – Jack

Verwandte Themen