我在很长一段时间之后再次与C合作,并试图了解可变功能。基本上,我希望能够将多个字符串传递给函数。
#include<stdarg.h>
int main(int argc, const char * argv[])
{
test_function(2,"test","test2");
test_function(4,"test3","test4","test5","test6");
return 0;
}
void test_function(int args, ...)
{
va_list ap;
va_start(ap, args);
int i;
for(i=0;i<args;i++)
{
printf("Argument:%s\n",va_arg(ap, char*));
}
va_end(ap);
}
我在test_function周围出现错误 - 'test_function'的冲突类型
有人能指出我的错误吗?
答案 0 :(得分:8)
在使用之前输入test_function
的声明。您需要包含stdio.h
,因为您使用的是printf
。
#include <stdarg.h>
#include <stdio.h>
void test_function(int args, ...);
int main(int argc, char * argv[])
{
答案 1 :(得分:2)
正如其他人所说的那样为test_function
设置了一个原型,并注意到
printf("Argument:%s\n",va_arg(ap, int));
您将字符串传递给此函数(不是int
s),而是使用:
printf("Argument:%s\n",va_arg(ap, char *));
答案 2 :(得分:1)
我忘了为这个功能添加原型,傻我!刚刚添加
void test_function (int args, ...);
在main()之上,它起作用了。
答案 3 :(得分:0)
为您的函数添加原型或在main()
之前定义它。