void fun1(int a, ...);
void fun2(int b, ...);
fun1中如何呼叫func2?
原來的想法天真了
void fun1(int a, ...)
{
fun2(a, ...);
}
求支招!!!
uj5u.com熱心網友回復:
#define debug_printf(fmt, ...) printf( fmt, ##__VA_ARGS__)uj5u.com熱心網友回復:
@stherix我說的函式 不是定義宏
我原本的意思就是:
#define FUNC(A, ...) func1(A, ##__VA_ARGS__)
func1需要將不定引數傳遞給func2
宏定義寫成
#define FUNC(A, ...) func2(A, ##__VA_ARGS__) 不太方便
所以想要一次轉調
uj5u.com熱心網友回復:
如果你要轉調的函式也是( ...)這種引數的話
應該是沒法做到的
uj5u.com熱心網友回復:
stdarg.h查一查就知道了
uj5u.com熱心網友回復:
只能用宏,函式之間無法直接呼叫uj5u.com熱心網友回復:
C++呀,不定引數模板可以搞定。uj5u.com熱心網友回復:
va_listuj5u.com熱心網友回復:
void fun1(int a, ...){
va_list args;
va_start(args,a); //拿到fun1 的不定引數串列
fun2(a, args); // 將fun1 的不定引數串列 作為引數 傳給 fun2。
}
void fun2(int a,...){
va_list fun2_args;
va_start(a, fun2_args); //拿到fun2 的不定引數串列
va_list fun1_args;
fun1_args = va_arg(fun2_args,va_list); // 通過fun2的不定參串列 拿到 fun1 的不定參串列
int a = va_arg(fun1_args, int); // 決議 fun1 的不定引數
printf("a: %d",a); //列印引數
}
fun1(1,10);
//輸出 是 10;
//這樣是可行的,我測驗過,但是這樣做合不合理嗎,我不確定。如果看不明白的話再說吧。
uj5u.com熱心網友回復:
指向不定引數函式的指標難道不能作為函式引數嗎?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/262629.html
標籤:模式及實現
上一篇:同樣一份.c檔案,我在Linux上編譯成.a檔案執行正常,在windows編譯成.exe檔案,執行前面正常,后面無結果輸出
下一篇:如何通過插值求取對應的值
