Получение предупреждения из функции pow библиотеки C math
у меня есть следующая функция в моем коде:
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 ответов
из формулировки ваших предупреждений похоже, что вы используете 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'