changeset 9474:6266ba33b229

Document 64-bit #if problems in stdint.texi. * doc/headers/stdint.texi (stdint.h): Mention problems with 64-bit-#if, and how to work around them.
author Paul Eggert <eggert@cs.ucla.edu>
date Mon, 12 Nov 2007 23:43:16 -0800
parents 8c3f82d802ec
children 799b495c5bed
files ChangeLog doc/headers/stdint.texi
diffstat 2 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2007-11-12  Paul Eggert  <eggert@cs.ucla.edu>
 
+	Document 64-bit #if problems in stdint.texi.
+	* doc/headers/stdint.texi (stdint.h): Mention problems with
+	64-bit-#if, and how to work around them.
+
 	Don't insist on 'long long int' support in the preprocessor.  It
 	breaks too many things.  For example, PRIdMAX still uses a 'long
 	long int' format with the latest Sun compiler, even though
--- a/doc/headers/stdint.texi
+++ b/doc/headers/stdint.texi
@@ -28,6 +28,14 @@
 types available on the system.
 @item
 Macros are used instead of typedefs.
+@item
+Some C preprocessors mishandle constants that do not fit in @code{long int}.
+For example, as of 2007, Sun C mishandles @code{#if LLONG_MIN < 0} on
+a platform with 32-bit @code{long int} and 64-bit @code{long long int}.
+Some older preprocessors mishandle constants ending in @code{LL}.
+To work around these problems, compute the value of expressions like
+@code{LONG_MAX < LLONG_MAX} at @code{configure}-time rather than at
+@code{#if}-time.
 @end itemize
 
 The stdint.h module uses @code{#include_next}.  If you wish to install