_Alignas(16) int i1;int _Alignas(16) i2;void _Alignas(16) *p2;_Alignas(16) i3;int _Alignas(double) i4;int _Alignas(int) i5;#if 0/* The following are currently wrongly accepted by TCC but really shouldn't. */int _Alignas(int _Alignas(16)) i6; //wrong, 'int _Alignas(16)' is no type-nametypedef int _Alignas(16) int16aligned_t; //wrong, _Alignas invalid on typedefint16aligned_t i7;#endif/* i8 should get an alignment of 16, because unlike _Alignas the corresponding attribute _does_ apply to type-name, though not in some clang versions. */int _Alignas(int __attribute__((aligned(16)))) i8;extern int printf(const char*, ...);#ifdef _MSC_VER#define alignof(x) (int)__alignof(x)#else#define alignof(x) (int)__alignof__(x)#endifint main(){ printf("%d %d %d %d\n", alignof(i1) == 16, alignof(i4) == alignof(double), alignof(i5) == alignof(int) , alignof(i8) == 16); return 0;}
_Alignas(16) int i1;
int _Alignas(16) i2;
void _Alignas(16) *p2;
_Alignas(16) i3;
int _Alignas(double) i4;
int _Alignas(int) i5;
#if 0
/* The following are currently wrongly accepted by TCC but really shouldn't. */
int _Alignas(int _Alignas(16)) i6; //wrong, 'int _Alignas(16)' is no type-name
typedef int _Alignas(16) int16aligned_t; //wrong, _Alignas invalid on typedef
int16aligned_t i7;
#endif
/* i8 should get an alignment of 16, because unlike _Alignas the
corresponding attribute _does_ apply to type-name, though not in
some clang versions. */
int _Alignas(int __attribute__((aligned(16)))) i8;
extern int printf(const char*, ...);
#ifdef _MSC_VER
#define alignof(x) (int)__alignof(x)
#else
#define alignof(x) (int)__alignof__(x)
#endif
int main()
{
printf("%d %d %d %d\n",
alignof(i1) == 16, alignof(i4) == alignof(double),
alignof(i5) == alignof(int) , alignof(i8) == 16);
return 0;
}