在C中轉發對變量函數的調用在C中,是否可以轉發變量函數的調用?就像在,int my_printf(char *fmt, ...) {
fprintf(stderr, "Calling printf with fmt %s", fmt);
return SOMEHOW_INVOKE_LIBC_PRINTF;}在這種情況下,以上述方式轉發調用顯然不是必要的(因為您可以其他方式記錄調用,也可以使用vfprintf),但是我正在處理的代碼庫要求包裝器執行一些實際的工作,并且沒有(也不能添加)類似于vfprintf的助手函數。[最新情況:根據迄今提供的答案,似乎有些混亂。用另一種方式來表達這個問題:一般來說,你能把一些任意的變量函數包裝起來嗎?而不修改該函數的定義.]
3 回答

互換的青春
TA貢獻1797條經驗 獲得超6個贊
varargs
printf
/vprintf
#include <stdarg.h>int m_printf(char *fmt, ...){ int ret; /* Declare a va_list type variable */ va_list myargs; /* Initialise the va_list variable with the ... after fmt */ va_start(myargs, fmt); /* Forward the '...' to vprintf */ ret = vprintf(fmt, myargs); /* Clean up the va_list */ va_end(myargs); return ret;}
- 3 回答
- 0 關注
- 497 瀏覽
添加回答
舉報
0/150
提交
取消