2012-07-30 11 views
5

Considerate questo codice:Come far sì che gcc avvisi le funzioni sconosciute?

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

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

Questo frammento di codice viene compilato in codice oggetto senza problemi con gcc, nonostante il fatto che la funzione chiamata 'aiutante' non è stato dichiarato. So che il linker dovrebbe prendere questo, ma ho visto l'oscuro bugs che è stato risolto una volta incluse le intestazioni corrette (contenenti le dichiarazioni delle funzioni), nonostante il linker e il compilatore non generassero errori.

Esistono numerosi avvisi di gcc che sembrano essere correlati ma in realtà non realizzano ciò che voglio: -Wissing-prototypes, -Wissing-declaration e -Wintict-prototypes. Sfortunatamente, questi avvertimenti sono limitati ai prototipi mancanti quando le funzioni globali sono definite, sono interessato agli avvisi relativi ai prototipi mancanti quando le funzioni globali sono con riferimento a.

Qualcuno può suggerire alternative ?, grazie.

risposta

11

Si desidera l'avviso -Wimplicit-function-declaration.

Personalmente, preferisco compilare il mio codice con -Wall -Wextra.

+0

Sì !, è quello che voglio :) –

+1

Questo è abilitato da -Wall (che dovresti sempre usare) e quando usi -std = c99. – ext

+0

@ext sì, questo è ciò che dice 'man gcc'. –

4

Utilizzare -Wl,--no-undefined per garantire un errore forzato undefined function.

+0

Questa opzione di linker? –

+0

@GearoidMurphy: Sì. – Jack

Problemi correlati