manpagez: man pages & more
info autoconf
Home | html | info | man

File: autoconf.info,  Node: Specific Compiler Characteristics,  Next: Generic Compiler Characteristics,  Up: Compilers and Preprocessors

5.10.1 Specific Compiler Characteristics
----------------------------------------

Some compilers exhibit different behaviors.

Static/Dynamic Expressions
     Autoconf relies on a trick to extract one bit of information from
     the C compiler: using negative array sizes.  For instance the
     following excerpt of a C source demonstrates how to test whether
     ‘int’ objects are 4 bytes wide:

          static int test_array[sizeof (int) == 4 ? 1 : -1];

     To our knowledge, there is a single compiler that does not support
     this trick: the HP C compilers (the real ones, not only the
     "bundled") on HP-UX 11.00.  They incorrectly reject the above
     program with the diagnostic "Variable-length arrays cannot have
     static storage."  This bug comes from HP compilers' mishandling of
     ‘sizeof (int)’, not from the ‘? 1 : -1’, and Autoconf works around
     this problem by casting ‘sizeof (int)’ to ‘long int’ before
     comparing it.

© manpagez.com 2000-2024
Individual documents may contain additional copyright information.