2013-02-14 93 views
0
int main(int argc, char *argv[]) // Send the path as a parameter 
{ 
    char ptr2[BUFSIZE]; 
    va_list list; 
    va_start(list,argv[]); 
} 

比方說,我得到這個代碼,如果我在這個主越來越多參數(比如我做一些像「./program車屋的學生手機」),他們每個人將是一個不同的論點,我怎麼把他們放在一個va_list?傳遞多個參數主要在C

我不知道我會收到多少個參數,但我需要把它放在va_list上,請幫助!謝謝!

+0

爲什麼你需要這樣做,出於好奇? – Ryan 2013-02-14 06:05:27

+0

我很確定標準C不提供任何方式來做到這一點。 – 2013-02-14 06:06:35

+0

argc給計數權利?所以有什麼問題? – Rajneesh 2013-02-14 06:07:47

回答

2

有沒有便攜的方式來做到這一點。但是,您可以通過編寫類似

va_list args; 
va_start(args, argv); // or maybe argc? Whatever, this doesn't make sense anyway 
// read: "please don't litter production code with UB" 
call_the_function(foo, args); 
va_end(args); 

傳遞一個初始化va_list到你的其他功能採取va_list而且,順便說一句:

我不知道有多少爭論很去接收。

這不是真的 - 這就是main()argc參數。

+0

使va_start(args,argc)或_maybe_ va_list args =(va_list)args; – 2013-02-14 06:35:32

+0

@AkiSuihkonen公平點,但我懷疑這是不確定的行爲。 – 2013-02-14 06:36:57