⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stdarg-3.c

📁 用于进行gcc测试
💻 C
字号:
#include <stdarg.h>extern void abort (void);int foo_arg, bar_arg;long x;double d;va_list gap;struct S1 { int i; double d; int j; double e; } s1;struct S2 { double d; long i; } s2;int y;voidbar (int v){  bar_arg = v;}voidf1 (int i, ...){  va_list ap;  va_start (ap, i);  while (i-- > 0)    x = va_arg (ap, long);  va_end (ap);}voidf2 (int i, ...){  va_list ap;  va_start (ap, i);  while (i-- > 0)    d = va_arg (ap, double);  va_end (ap);}voidf3 (int i, ...){  va_list ap;  int j = i;  while (j-- > 0)    {      va_start (ap, i);      x = va_arg (ap, long);      va_end (ap);      bar (x);    }}voidf4 (int i, ...){  va_list ap;  int j = i;  while (j-- > 0)    {      va_start (ap, i);      d = va_arg (ap, double);      va_end (ap);      bar (d + 4.0);    }}voidf5 (int i, ...){  va_list ap;  va_start (ap, i);  while (i-- > 0)    s1 = va_arg (ap, struct S1);  va_end (ap);}voidf6 (int i, ...){  va_list ap;  va_start (ap, i);  while (i-- > 0)    s2 = va_arg (ap, struct S2);  va_end (ap);}voidf7 (int i, ...){  va_list ap;  int j = i;  while (j-- > 0)    {      va_start (ap, i);      s1 = va_arg (ap, struct S1);      va_end (ap);      bar (s1.i);    }}voidf8 (int i, ...){  va_list ap;  int j = i;  while (j-- > 0)    {      va_start (ap, i);      s2 = va_arg (ap, struct S2);      y = va_arg (ap, int);      va_end (ap);      bar (s2.i);    }}intmain (void){  struct S1 a1, a3;  struct S2 a2, a4;  f1 (7, 1L, 2L, 3L, 5L, 7L, 9L, 11L, 13L);  if (x != 11L)    abort ();  f2 (6, 1.0, 2.0, 4.0, 8.0, 16.0, 32.0, 64.0);  if (d != 32.0)    abort ();  f3 (2, 1L, 3L);  if (bar_arg != 1L || x != 1L)    abort ();  f4 (2, 17.0, 19.0);  if (bar_arg != 21 || d != 17.0)    abort ();  a1.i = 131;  a1.j = 251;  a1.d = 15.0;  a1.e = 191.0;  a3 = a1;  a3.j = 254;  a3.e = 178.0;  f5 (2, a1, a3, a1);  if (s1.i != 131 || s1.j != 254 || s1.d != 15.0 || s1.e != 178.0)    abort ();  f5 (3, a1, a3, a1);  if (s1.i != 131 || s1.j != 251 || s1.d != 15.0 || s1.e != 191.0)    abort ();  a2.i = 138;  a2.d = 16.0;  a4.i = 257;  a4.d = 176.0;  f6 (2, a2, a4, a2);  if (s2.i != 257 || s2.d != 176.0)    abort ();  f6 (3, a2, a4, a2);  if (s2.i != 138 || s2.d != 16.0)    abort ();  f7 (2, a3, a1, a1);  if (s1.i != 131 || s1.j != 254 || s1.d != 15.0 || s1.e != 178.0)    abort ();  if (bar_arg != 131)    abort ();  f8 (3, a4, a2, a2);  if (s2.i != 257 || s2.d != 176.0)    abort ();  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -