Endless "declared 'static' but never defined" warnings with stage 2 & 3 compilers

Vincent Rivière vincent.riviere@freesbee.fr
Tue Jun 12 12:03:00 GMT 2012


On 11/06/2012 21:20, t-rexky wrote:
>> #include<math.h>
>> #include<stdio.h>
>>
>> int main() {
>>   printf("%lf\n", acos(0.5));
>>   return 0;
>> }

First, note that acos(0.5) is a "double" expression so its format should 
be %f. However %lf is tolerated and this should not cause any trouble.

Second, the acos() call will be internally replaced by __builtin_acos() 
which may be directly replaced by its result, if it can be computed at 
compile time (which is the case in your example).
Try to add -fno-builtin on the command line to see if the same odd 
things happen.

> nextstep[Tests]$xgcc acos_test.c -o acos_test
> <built-in>:0: warning: '__builtin_acos' used but never defined
> /NextDeveloper/Headers/ansi/math.h:55: warning: 'acos' used but never defined

The problem may be in your math.h. This header is not provided by GCC, 
but by your math library. You should have a look to the indicated line 
to see what is there.

Also, looking at the preprocessor output may help.
Try this:
   xgcc -E acos_test.c
Then search for acos to see if there is nothing wierd.

Good luck.

-- 
Vincent Rivière



More information about the Gcc mailing list