2012-07-30 16 views
5

consideran este código:¿Cómo hacer que gcc advierta sobre funciones desconocidas?

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

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

Este fragmento de código se compila en código objeto sin problema utilizando gcc, a pesar del hecho de que la función llamada 'ayudante' no se ha declarado. Sé que el enlazador debería detectar esto, pero he visto bugs oscuro que se resolvió una vez que se incluyeron los encabezados correctos (que contienen las declaraciones de funciones), a pesar de que el enlazador y el compilador no generaron ningún error.

Hay una serie de advertencias de gcc que parecen estar relacionadas, pero que en realidad no logran lo que quiero: -Withsing-prototypes, -Wmissing-declarations y -Wstrict-prototypes. Desafortunadamente, estas advertencias están limitadas a prototipos perdidos cuando las funciones globales son definidas, estoy interesado en advertencias sobre prototipos perdidos cuando las funciones globales son con referencia.

¿Alguien puede sugerir alternativas ?, gracias.

Respuesta

11

Quiere -Wimplicit-function-declaration advertencia.

Personalmente, prefiero compilar mi código con -Wall -Wextra.

+0

¡Sí !, ese es el que quiero :) –

+1

Esto es habilitado por -Wall (que siempre se debe usar) y cuando se usa -std = c99. – ext

+0

@ext sí, esto es lo que dice 'man gcc'. –

4

Utilice -Wl,--no-undefined para asegurar un error forzado de undefined function.

+0

¿Esta es una opción del vinculador? –

+0

@GearoidMurphy: Sí. – Jack

Cuestiones relacionadas