変数引数リストを持つ関数に変数引数を渡す
同様の変数引数を持つ 2 つの関数を考えます:
void example(int a, int b, ...); void exampleB(int b, ...);
example が exampleB を呼び出しますが、exampleB (使用されている) は変更しないとします。他の場所)。 example から exampleB に可変引数を渡すにはどうすればよいですか?
解決策:
引数を直接渡すことはできません。代わりに、va_list を取るラッパー関数を作成します:
#include <stdarg.h> static void exampleV(int b, va_list args);
変更された関数 exampleA:
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); }
未変更の関数 exampleB:
void exampleB(int b, ...) { va_list args; va_start(args, b); exampleV(b, args); va_end(args); }
ラッパーFunction exampleV:
static void exampleV(int b, va_list args) { // Whatever `exampleB` was intended to do... // Except it doesn't call either `va_start` or `va_end`. }
このアプローチにより、example から exampleB を変更せずに可変引数を渡すことができます。ラッパー関数 exampleV は va_start または va_end を呼び出しません。これにより、exampleB の既存の使用法との一貫性が確保されます。
以上が受信関数を変更せずに、ある関数から別の関数に変数引数を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。