Jeff Sparkes wrote:
>> GCC has a -C89 switch or something like that that either
enforces or
>> warns about C89 compatibility.
>
> -std=c89 (for C, this is equivalent to -ansi). If you use that switch,
> you typically need to explicitly define feature macros (-D_POSIX_SOURCE,
> -D_XOPEN_SOURCE, etc), otherwise the standard C headers (<stdio.h> etc)
> will omit declarations which aren't part of the C standard.
I compiled with -ansi successfully without changes. (After I fixed the
error I had introduced.) I didn't look at any warnings though.
I just tried with -std=c89 and it failed at line 1389 in lisp.h, which
is DECLARE_INLINE_HEADER. It must turn off gcc extensions, wchi aren't
standard anyway. :-)
So we could use -ansi with gcc. Or would that be on linux? I'm not
sure which condition would trigger it. I've added it to my personal
configuration script.
You also need -pedantic to generate all of the diagnostics required by
the standard. Using -ansi/-std alone ensures that standards-conformant
programs won't fail to compile due to extensions (e.g. due to symbol
conflicts caused by the declaration of additional symbols in standard
headers).
Using -ansi/-std without adding the feature macros can result in code
compiling and linking successfully but failing at run-time due to
missing prototypes (and thus missing implicit type conversions).
I suspect that -ansi/-std= may not be viable on Windows; the Win32
headers tend to take MSVC extensions for granted.
--
Glynn Clements <glynn(a)gclements.plus.com>
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-beta