Karim Belabas on Wed, 01 Feb 2006 13:50:47 +0100


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

Re: PARI and C99


[ was Re: Some functions from paridecl.h are not implemented ]

* Benjamin Benninghofen [2006-01-31 21:37]:
> 
>     A simple workaround is to use something like
> 
>       env CFLAGS="-std=c99" Configure
> 
>     Hope this helps
> 
> I tried this on another machine under Fedora Core 4 (32 Bit) and
> that solved the problem.
> 
> However compiling PARI with -std=c99 generated the following 
> warnings (containing strange special characters):
?
> /usr/bin/gcc  -c -O3 -Wall -fno-strict-aliasing -fomit-frame-pointer -fno-gcse-after-reload -std=c99  -I. -I../src/headers -I../src/language -I/usr/include -o gp.o ../src/gp/gp.c
> ../src/gp/gp.c: In function ???is_interactive???:
> ../src/gp/gp.c:1357: warning: implicit declaration of function ???fileno???
> 

1) no idea about the special characters, a minor problem in your local
configuration.

2) the glibc headers abstain from declaring certain functions when a strict
conformance mode is specified. Specificaly, /usr/include/stdio.h,
contain (essentially)

#ifdef  __USE_POSIX
  extern int fileno (FILE *__stream) __THROW;
#endif /* Use POSIX.  */

In /usr/include/features.h, we see that -std=c99 will not define __USE_POSIX
(which would be defined otherwise), only the more restrictive __USE_ISOC99.
fileno is in POSIX but not in ISO C99...

So you can either ignore the warnings or use suitable variants, like

   gcc -std=c99 -D_POSIX_C_SOURCE=200112L

Cheers,

    K.B.
-- 
Karim Belabas                  Tel: (+33) (0)5 40 00 26 17
Universite Bordeaux 1          Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation    http://www.math.u-bordeaux.fr/~belabas/
F-33405 Talence (France)       http://pari.math.u-bordeaux.fr/  [PARI/GP]