2010-09-20 14 views
9

tengo la siguiente función en mi código:Primeros advertencia de la función pow de biblioteca matemática C

int numberOverflow(int bit_count, int num, int twos) { 
    int min, max; 
    if (twos) { 
     min = (int) -pow(2, bit_count - 1);  \\ line 145 
     max = (int) pow(2, bit_count - 1) - 1; 
    } else { 
     min = 0; 
     max = (int) pow(2, bit_count) - 1;   \\ line 149 
    } 
    if (num > max && num < min) { 
     printf("The number %d is too large for it's destination (%d-bit)\n", num, bit_count); 
     return 1; 
    } else { 
     return 0; 
    } 
} 

En tiempo de compilación aparece el siguiente aviso:

assemble.c: In function ‘numberOverflow’: 
assemble.c:145: warning: incompatible implicit declaration of built-in function ‘pow’ 
assemble.c:149: warning: incompatible implicit declaration of built-in function ‘pow’ 

Estoy en una pérdida de ¿Qué está causando esto ... alguna idea?

Respuesta

1

De la redacción de sus advertencias parece que está utilizando gcc? Tal vez vale la pena probar otro compilador, concretamente clang. Este me dice:

test-pow.c:15:18: warning: implicitly declaring C library function 'pow' with type 'double (double, double)' [-pedantic] 
test-pow.c:15:18: note: please include the header <math.h> or explicitly provide a declaration for 'pow' 
Cuestiones relacionadas