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

📄 stdarg-1.c

📁 linux下编程用 编译软件
💻 C
字号:
#include <stdarg.h>extern void abort (void);int foo_arg, bar_arg;long x;double d;va_list gap;va_list *pap;voidfoo (int v, va_list ap){  switch (v)    {    case 5: foo_arg = va_arg (ap, int); break;    default: abort ();    }}voidbar (int v){  if (v == 0x4006)    {      if (va_arg (gap, double) != 17.0	  || va_arg (gap, long) != 129L)	abort ();    }  else if (v == 0x4008)    {      if (va_arg (*pap, long long) != 14LL	  || va_arg (*pap, long double) != 131.0L	  || va_arg (*pap, int) != 17)	abort ();    }  bar_arg = v;}voidf0 (int i, ...){}voidf1 (int i, ...){  va_list ap;  va_start (ap, i);  va_end (ap);}voidf2 (int i, ...){  va_list ap;  va_start (ap, i);  bar (d);  x = va_arg (ap, long);  bar (x);  va_end (ap);}voidf3 (int i, ...){  va_list ap;  va_start (ap, i);  d = va_arg (ap, double);  va_end (ap);}voidf4 (int i, ...){  va_list ap;  va_start (ap, i);  x = va_arg (ap, double);  foo (i, ap);  va_end (ap);}voidf5 (int i, ...){  va_list ap;  va_start (ap, i);  va_copy (gap, ap);  bar (i);  va_end (ap);  va_end (gap);}voidf6 (int i, ...){  va_list ap;  va_start (ap, i);  bar (d);  va_arg (ap, long);  va_arg (ap, long);  x = va_arg (ap, long);  bar (x);  va_end (ap);}voidf7 (int i, ...){  va_list ap;  va_start (ap, i);  pap = &ap;  bar (i);  va_end (ap);}voidf8 (int i, ...){  va_list ap;  va_start (ap, i);  pap = &ap;  bar (i);  d = va_arg (ap, double);  va_end (ap);}intmain (void){  f0 (1);  f1 (2);  d = 31.0;  f2 (3, 28L);  if (bar_arg != 28 || x != 28)    abort ();  f3 (4, 131.0);  if (d != 131.0)    abort ();  f4 (5, 16.0, 128);  if (x != 16 || foo_arg != 128)    abort ();  f5 (0x4006, 17.0, 129L);  if (bar_arg != 0x4006)    abort ();  f6 (7, 12L, 14L, -31L);  if (bar_arg != -31)    abort ();  f7 (0x4008, 14LL, 131.0L, 17, 26.0);  if (bar_arg != 0x4008)    abort ();  f8 (0x4008, 14LL, 131.0L, 17, 27.0);  if (bar_arg != 0x4008 || d != 27.0)    abort ();  return 0;}

⌨️ 快捷键说明

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