> Date: Mon, 9 Jan 2017 12:14:21 +0100 > From: Marc Espie <es...@nerim.net> > > On Sun, Jan 08, 2017 at 09:53:50PM +0000, Stuart Henderson wrote: > > graphics/ttfautohint > > > > c++ -std=gnu++11 -DHAVE_CONFIG_H -I. -I.. -I../lib -I../gnulib/src > > -I../gnulib/src -I/usr/X11R6/include/freetype2 -O2 -pipe -MT info.o -MD > > -MP -MF .deps/info.Tpo -c -o info.o info.cpp > > In file included from ../gnulib/src/stdio.h:53:0, > > from info.cpp:15: > > ../gnulib/src/stddef.h:106:3: error: conflicting declaration 'typedef union > > max_align_t max_align_t' > > } max_align_t; > > ^ > > In file included from ../gnulib/src/stddef.h:55:0, > > from ../gnulib/src/stdio.h:53, > > from info.cpp:15: > > /usr/include/stddef.h:80:3: note: previous declaration as 'typedef struct > > max_align_t max_align_t' > > } max_align_t; > > ^ > Well, gnu/stddef.h has no business redefining max_align_t > > That said, I don't see any way that our definition can be right. It should be > an union.
The definition is carefully chosen to match what both gcc and clang provide. There are apparently a lot of subtleties involved, and possibly compiler bugs that this works around.