問題:
你有兩個函數,例如( ) 和exampleB(),具有類似的變數參數列表:
void example(int a, int b, ...); void exampleB(int b, ...);
您需要從 exampleB() 中呼叫 example(),而不修改後者的變數參數列表,因為它在其他地方使用。
解:
不幸的是,C 中沒有直接的方法來傳遞變數參數。要實現這一點,您必須定義一個輔助函數它採用 va_list 參數。這是一個範例:
#include <stdarg.h> static void exampleV(int b, va_list args); void exampleA(int a, int b, ...) // Renamed for consistency { va_list args; do_something(a); // Use argument a somehow va_start(args, b); exampleV(b, args); va_end(args); } void exampleB(int b, ...) { va_list args; va_start(args, b); exampleV(b, args); va_end(args); } static void exampleV(int b, va_list args) { ...whatever you planned to have exampleB do... ...except it calls neither va_start nor va_end... }
在此設定中:
透過新增 exampleV() 作為中介,您可以將變數參數傳遞給 exampleB(),而無需修改其原始實作。
以上是如何使用變數參數列表在 C 函數之間傳遞變數參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!