Getting warning from C math library's pow function

23,722

Solution 1

You need to include math.h

And why exactly do we get this warning?

Solution 2

From the wording of your warnings it looks like you are using gcc? Maybe it is worth to try another compiler, namely clang. This one tells me:

 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'
Share:
23,722
Ian Burris
Author by

Ian Burris

Updated on September 20, 2020

Comments

  • Ian Burris
    Ian Burris over 3 years

    I have the following function in my code:

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

    At compile time I get the following warning:

    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’
    

    I'm at a loss for what is causing this... any ideas?