/* va_arg example */
#include <stdio.h>
#include <stdarg.h>
void PrintLines ( char* first, ...)
{
char* str;
va_list vl;
str=first;
va_start(vl,first);
do {
str=va_arg(vl,char*);
if
printf ("%s\n",str);
} while (str!=NULL);
va_end(vl);
}
int main ()
{
PrintLines ("First","Second","Third","Fourth",NULL);
return 0;
}
我们能否像这样调用 PrintLines
函数 PrintLines("First","Second","Third",6,NULL);
将整数作为可变参数列表。如果是,谁能解释一下如何做到这一点?
所以对于您的情况,您只需对其进行硬编码,例如:
void PrintLines ( char* first, ...)
...
str1=va_arg(vl,char*);
str2=va_arg(vl,char*);
str3=va_arg(vl,char*);
int4=va_arg(vl,int);
va_end(vl);
}
但我认为这不是您想要的:有时您可能希望在位置 4 处使用整数调用 PrintLines,有时使用字符串。然后你必须告诉它 pos 4 的那个东西是什么,因为这个糟糕的函数应该如何找出 112312123 是整数还是字符串地址?因此,您必须向该函数提供一些类型信息,可能类似于在 printf 和 friend 中所做的那样:第一个 arg 包含一个描述其余参数的字符串。也许像 vsprintf 这样的东西对你来说是完美的工作?
我是一名优秀的程序员,十分优秀!