struct-layout-1.c
来自「用于进行gcc测试」· C语言 代码 · 共 92 行
C
92 行
/* { dg-options "-std=gnu99" } */#include <stdarg.h>extern void abort (void);struct S1{ _Decimal64 a[0];};struct S2{ struct { _Decimal64 e; } b[0];};struct S3{ union { _Decimal64 c; } a[0];};struct S4{ int a[0]; _Decimal64 b[0];};struct S5{ union { _Decimal64 c[0]; } a;};static int failcnt = 0;/* Support compiling the test to report individual failures; default is to abort as soon as a check fails. */#ifdef DBG#include <stdio.h>#define FAILURE do \{ printf ("failed at line %d\n", __LINE__); \ failcnt++; \}while(0)#else#define FAILURE abort ()#endifint check_var (int z, ...){ long long result; va_list ap; va_start (ap, z); va_arg (ap, struct S1); result = va_arg (ap, long long); va_end (ap); return (result == 2LL);}int main (){ struct S1 s1; struct S2 s2; struct S3 s3; struct S4 s4; struct S5 s5; if (check_var (2, s1, 2LL) == 0) FAILURE; if (check_var (2, s2, 2LL) == 0) FAILURE; if (check_var (2, s3, 2LL) == 0) FAILURE; if (check_var (2, s4, 2LL) == 0) FAILURE; if (check_var (2, s5, 2LL) == 0) FAILURE; if (failcnt) abort (); return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?