gpt4 book ai didi

c - 变长参数列表

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:27 25 4
gpt4 key购买 nike

/* 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 这样的东西对你来说是完美的工作?

关于c - 变长参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13535935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com