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.