varargs-1.c

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

C
100
字号
#include <altivec.h>#include <stdarg.h>#include <stdio.h>typedef vector unsigned int T;extern void f1(int, ...);extern void f2(int, T, ...);extern void f3(int, T, T, ...);extern void f4(int, T, T, T);void printx(T a){  union {    T v;    unsigned int a[4];  } u;  u.v = a;  printf("%d, %d, %d, %d\n", u.a[0], u.a[1], u.a[2], u.a[3]);}void f1(int a, ...){  va_list ap;  va_start (ap, a);  while (a-- > 0)    printx(va_arg(ap, T));  va_end (ap);}void f2(int a, T b, ...){  va_list ap;  printx(b);  a--;  va_start (ap, b);  while (a-- > 0)    printx(va_arg(ap, T));  va_end (ap);}void f3(int a, T b, T c, ...){  va_list ap;  printx(b);  a--;  printx(c);  a--;  va_start (ap, c);  while (a-- > 0)    printx(va_arg(ap, T));  va_end (ap);}void f4(int a, T b, T c,	T d){  printx(b);  a--;  printx(c);  a--;  printx(d);  a--;}int main(){  f4 (3,      ((T){1,1,1,1}),      ((T){2,2,2,2}),       ((T){3,3,3,3}));  f3 (3,      ((T){4,4,4,4}),      ((T){5,5,5,5}),       ((T){6,6,6,6}));  f2 (3,      ((T){7,7,7,7}),      ((T){8,8,8,8}),       ((T){9,9,9,9}));  f1 (3,      ((T){10,10,10,10}),      ((T){11,11,11,11}),       ((T){12,12,12,12}));  return 0;}/* { dg-output "1, 1, 1, 1(\n|\r\n|\r)" }   { dg-output "2, 2, 2, 2(\n|\r\n|\r)" }   { dg-output "3, 3, 3, 3(\n|\r\n|\r)" }   { dg-output "4, 4, 4, 4(\n|\r\n|\r)" }   { dg-output "5, 5, 5, 5(\n|\r\n|\r)" }   { dg-output "6, 6, 6, 6(\n|\r\n|\r)" }   { dg-output "7, 7, 7, 7(\n|\r\n|\r)" }   { dg-output "8, 8, 8, 8(\n|\r\n|\r)" }   { dg-output "9, 9, 9, 9(\n|\r\n|\r)" }   { dg-output "10, 10, 10, 10(\n|\r\n|\r)" }   { dg-output "11, 11, 11, 11(\n|\r\n|\r)" }   { dg-output "12, 12, 12, 12(\n|\r\n|\r)" } */

⌨️ 快捷键说明

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