[PATCH] D59253: [AIX][libcxx] AIX system headers need stdint.h and inttypes.h to be re-enterable when macro _STD_TYPES_T is defined
Xing Xue via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue May 28 13:39:21 PDT 2019
xingxue marked an inline comment as done.
xingxue added inline comments.
================
Comment at: libcxx/include/stdint.h:16
+#endif // _STD_TYPES_T
/*
----------------
hubert.reinterpretcast wrote:
> mclow.lists wrote:
> > I don't think that this will do what you want it to.
> > Is this a supported use case?
> >
> > ```
> > #include <stdint.h>
> > #define _STD_TYPES_T
> > #include <stdint.h>
> > ```
> >
> >
> The comment is perhaps not clear. We need `<stdint.h>` to be re-enterable only as long as all previous inclusions have occurred while `_STD_TYPES_T` is defined. The effect of including `<stdint.h>` without defining `_STD_TYPES_T` is a strict superset of the effects of including `<stdint.h>` in other circumstances. Should we adjust the comment?
Updated comments as suggested. This patch helps scenarios such as the following on `AIX`.
#include <sys/types.h>
#include <stdint.h>
where `<sys/types.h>` included in the first line defines macro `_STD_TYPES_T`, includes `<stdint.h>`, and then undefines `_STD_TYPES_T`. `<stdint.h>` included in the second line can be entered to get to macros such as `UINT32_MAX`. Since `_STD_TYPES_T` is undefined with the second inclusion, the header guard macro is defined and `<stdint.h>` is no longer re-enterable.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D59253/new/
https://reviews.llvm.org/D59253
More information about the cfe-commits
mailing list