varargs-3.c

来自「用于进行gcc测试」· C语言 代码 · 共 76 行

C
76
字号
#include "harness.h"#include <stdarg.h>typedef struct n_a{  signed char m1;  short m2;  int m3;  double m4;  vector float m5;}n_a;voidvarlistn_a(signed char p1, va_list ap){  n_a q;  q.m1 = p1;  q.m2 = va_arg(ap, int);  q.m3 = va_arg(ap, int);  q.m4 = va_arg(ap, double);  q.m5 = va_arg(ap, vector float);  check(q.m1 == 77, "q.m1");  check(q.m2 == 1924, "q.m2");  check(q.m3 == -1471601920, "q.m3");  check(q.m4 == 3.65e+18, "q.m4");  check(vec_all_eq(q.m5, ((vector float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08})), "q.m5");}voidvarargsn_a(signed char p1, ...){  n_a r, s;  va_list ap;  va_start(ap, p1);  r.m1 = p1;  r.m2 = va_arg(ap, int);  r.m3 = va_arg(ap, int);  r.m4 = va_arg(ap, double);  r.m5 = va_arg(ap, vector float);  va_end(ap);  check(r.m1 == 77, "r.m1");  check(r.m2 == 1924, "r.m2");  check(r.m3 == -1471601920, "r.m3");  check(r.m4 == 3.65e+18, "r.m4");  check(vec_all_eq(r.m5, ((vector float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08})), "r.m5");  va_start(ap, p1);  s.m1 = p1;  s.m2 = va_arg(ap, int);  s.m3 = va_arg(ap, int);  s.m4 = va_arg(ap, double);  s.m5 = va_arg(ap, vector float);  va_end(ap);  check(s.m1 == 77, "s.m1");  check(s.m2 == 1924, "s.m2");  check(s.m3 == -1471601920, "s.m3");  check(s.m4 == 3.65e+18, "s.m4");  check(vec_all_eq(s.m5, ((vector float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08})), "s.m5");  va_start(ap, p1);  varlistn_a(p1, ap);  va_end(ap);}void test(){  varargsn_a(77, 1924, -1471601920, 3.65e+18, ((vector float){-1.38e+09, 5.96e+08, 6.88e+08, -3.2e+08}));}

⌨️ 快捷键说明

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