bug-gnulib
[Top][All Lists]
Advanced

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

header file order issue on tar-1.19/lib/inttypes.h


From: John E. Malmberg
Subject: header file order issue on tar-1.19/lib/inttypes.h
Date: Sun, 16 Dec 2007 21:15:58 -0600
User-agent: Mozilla/5.0 (X11; U; OpenVMS AlphaServer_DS10_617_MHz; en-US; rv:1.7) Gecko/20040621

Hello,

I am attempting to build tar-1.19 on VMS.

I am getting an error assert from inttypes.h:

"This file assumes that 'int' has exactly 32 bits. Please report your platform and compiler to <bug-gnulib(at)gnu.org>.

From the analysis of the macro values used to generate the error assert, I have discovered that INT32_MAX and INT32_MIN have not been yet defined.

It looks like the issue is related to the order that the header files get included and the guard macros used.

Step 1:

lib/stdint.h sets up guard macros to prevent it from being recursively called.

lib/stdint.h then sets _GL_JUST_INCLUDE_SYSTEM_INTTYPE_H and does a #include <inttypes.h>, which really just includes the system inttypes.h.

After that it undefs _GL_JUST_INCLUDE_SYSTEM_INTTYPE_H.

It then includes <sys/bitypes.h>, the system supplied version.

sys/bitypes.h on VMS then includes <inttypes.h> intending to pull in the system one, but actually gets the replacement because of the -I setting.

Now lib/inttypes.h, with out the inhibit macros, and with out the INT32_MAX and INT32_MIN macros defined.

The quick patch that I can do is to move where the #undef of the _GL_JUST_INCLUDE_SYSTEM_DIRECTORY_H is.

The long term fix to avoid this would be to not use the same names for the replacement header files as the system header files, because system header files can and do call each other, and will not know about any guards.

As bitypes.h is not part of x/open, I can not find any official rules as to what header files it is also allowed to expose.

Regards,
-John
address@hidden
Personal Opinion Only




reply via email to

[Prev in Thread] Current Thread [Next in Thread]