-2

经过很长时间的项目后,我再次使用 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' 的类型冲突

谁能指出我的错误?

4

4 回答 4

8

test_function在使用它之前放置声明。stdio.h由于您使用的是printf.

#include <stdarg.h>
#include <stdio.h>

void test_function(int args, ...);

int main(int argc, char * argv[])
{
于 2013-10-14T08:29:18.317 回答
2

正如其他人所说,放置一个原型test_function,还要注意在

 printf("Argument:%s\n",va_arg(ap, int));

您正在将字符串传递给此函数(不是ints),而是使用:

 printf("Argument:%s\n",va_arg(ap, char *));
于 2013-10-14T08:34:45.863 回答
1

我忘了为函数添加原型,我傻了!刚刚添加

void test_function (int args, ...); 

在 main() 之上,它起作用了。

于 2013-10-14T08:31:54.763 回答
0

要么为你的函数放置一个原型,要么在之前定义它main()

于 2013-10-14T08:31:22.547 回答