Получение предупреждения от функции pow библиотеки C math - PullRequest
9 голосов
/ 20 сентября 2010

В моем коде есть следующая функция:

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;
    }
}

Во время компиляции я получаю следующее предупреждение:

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’

Я в растерянности из-за того, что вызывает это... есть идеи?

Ответы [ 2 ]

14 голосов
/ 20 сентября 2010
1 голос
/ 20 сентября 2010

Из формулировки ваших предупреждений похоже, что вы используете gcc?Возможно стоит попробовать другой компилятор, а именно clang.Этот говорит мне:

 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'
...