#if does not work!
Unga
unga888@yahoo.com
Sat Jun 21 11:52:00 GMT 2008
--- On Sat, 6/21/08, Andrew Haley <aph@redhat.com> wrote:
> From: Andrew Haley <aph@redhat.com>
> Subject: Re: #if does not work!
> To: unga888@yahoo.com
> Cc: gcc-help@gcc.gnu.org
> Date: Saturday, June 21, 2008, 5:17 PM
> Unga wrote:
> > Hi all
> >
> > I'm using the gcc 4.3.1 on FreeBSD 7.0. The
> following #if block does not work as expected:
> >
> > #if LDBL_MANT_DIG == 64
> > static const long double split = 0x1p32L +
> 1.0;
> > #elif LDBL_MANT_DIG == 113
> > static const long double split = 0x1p57L +
> 1.0;
> > #endif
> >
> > Where the LDBL_MANT_DIG is defined as 64 as a #define
> on a separate include file. The compiler finds the variable
> split is not declared. It does not complain the include file
> is not found, therefore, I presume include file is found and
> included.
> >
> > Is this a known issue? Is it possible to rewrite the
> code so that compiler can work properly.
>
> Please reproduce this problem in a small self-contained
> test case, them
> I'll have a look.
>
Hi Andrew, thanks for the reply.
I'm really sorry, I came to a fast conclusion, my tests shows #if works well.
It made me alarm to learn the real issue behind this.
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 .
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.
1. How do I instruct the gcc to get headers only from directories I want?
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?
Appreciate your reply on this.
Best Regards
Unga
More information about the Gcc-help
mailing list