[vlc-devel] GCC 4.8 and max_align_t
Francois Cartegnie
fcvlcdev at free.fr
Thu Sep 15 13:28:31 CEST 2016
Le 15/09/2016 à 12:57, Sean McGovern a écrit :
>
> Hi,
>
> It looks like max_align_t is already defined by GCC 4.8 in a compiler-specific
> copy of stddef.h (somewhere under something like
> /usr/lib/<triplet>/gcc/4.8/include on my Ubuntu 14.04 machine). Is there a way
> we can account for this issue in compat/ somehow?
Defines it ONLY if C++11 or C11
> #if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) \
> || (defined(__cplusplus) && __cplusplus >= 201103L)
> #ifndef _GCC_MAX_ALIGN_T
> #define _GCC_MAX_ALIGN_T
> /* Type whose alignment is supported in every context and is at least
> as great as that of any standard type not using alignment
> specifiers. */
> typedef struct {
> long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
> long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
> } max_align_t;
> #endif
> #endif /* C11 or C++11. */
If you compiled C in C99, then it was broken for max_align.
If you tried to compile with -std=c11, then you failed with the atomics
mess.
Thus the vlc_fixups definition.
But if you now compile with C++ 11, then you break on a double
definition of max_align.
So you're now borked with pre GCC 4.9 unless you
#if !defined(__cplusplus) || __cplusplus < 201103L
the above mentioned max_align definition in vlc_fixup.
Francois
More information about the vlc-devel
mailing list