Re: #if does not work!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Unga wrote:
> --- On Sat, 6/21/08, Andrew Haley <aph@xxxxxxxxxx> wrote:
>
> Here is a test case:
>
> #include <stdio.h>
> #include <float.h>
>
> main()
> {
>  printf("%d\n", LDBL_MANT_DIG);
> }
>
>
> In float.h, the LDBL_MANT_DIG is defined as:
> #define LDBL_MANT_DIG   64
>
> I compile the above test program as:
> gcc -I/tools/include -I/tools/usr/include -o test test.c
>
> ./test prints 53!!!!
>
> The reason is, it is not taking the float.h from /tools/usr/include,
> but from
> /tools/lib/gcc/i386-unknown-freebsd7.0/4.3.1/include/float.h .

Yeah, this is right: gcc sometimes needs its own fixed versions of standard headers.

> Rename the
> /tools/lib/gcc/i386-unknown-freebsd7.0/4.3.1/include/float.h to
> something else and compile the test.c and run prints 64.
>
> Programs I compile should get their header files only from
> /tools/include and /tools/usr/include.

Well, that would mean that you would not be able to access the
system's C library at all.  Do I take it that you have an entire C
library installed in /tools?  If so, that is a really weird thing to
do and I son't know where you're going with it.

> 1. How do I instruct the gcc to get headers only from directories I
> want?

Either provide full paths in your #include or use -nostdinc.
Try using #include "float.h" not #include <float.h>.

> 2. Do I need /tools/lib/gcc/i386-unknown-freebsd7.0/4.3.1/include/
> anymore? Can I either remove or rename after the gcc is installed?

You probably do, yes.  But bypassing your system's C library's headers
is so fraught with potential problems it's hard to be sure.

Andrew.


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux