In article <pn1n59$oj0$1...@blaine.gmane.org>, Christos Zoulas <chris...@astron.com> wrote: >In article <20180908230813.ga22...@sdf.org>, <co...@sdf.org> wrote: >>we do this in stdint.h and some other headers: >> >>#ifndef uint32_t >>typedef __uint32_t uint32_t; >>#define uint32_t __uint32_t >>#endif >> >> >>Real-world examples: >>https://github.com/neovim/neovim/blob/94841e5eaebc3f2fb556056dd676afff21ff5d23/src/nvim/map.h#L12 >>https://github.com/NetBSD/pkgsrc/blob/trunk/www/firefox/patches/patch-servo_components_style_build__gecko.rs >> >>And now I ran into: >>https://cgit.freedesktop.org/mesa/mesa/tree/src/compiler/builtin_type_macros.h#n42 >> >>Proposal: let's not define the macros? >>I don't know if there are long running consequences for it. > >The problem is that these are defined in multiple headers and >typedef redefinition with the same type is a c11 feature, so the >define protects against that. Of course one can use a different >macro and this was done before, but this has other disadvantages.
The other approach is: #ifdef _BSD_TIME_T_ typedef _BSD_TIME_T_ time_t; #undef _BSD_TIME_T_ #endif christos