我在一段時間之後再次使用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」
任何人都可以點我到我的錯誤?
你有沒有'test_function'的原型,編譯器在'main()'中發現時隱式聲明它爲'int test_function()'。然後遇到'void test_function(int,...)'。他們不一樣。 – WhozCraig
只是想出來了!感謝Whoz! – A23
爲什麼你一直使用'va_arg(ap,int)'而不是'va_arg(ap,char *)'? – glglgl