1. ホーム
  2. c++

[解決済み] 変数引数リストを受け取る別の関数への変数引数の渡し方

2022-06-08 04:38:37

質問

2つの関数があり、どちらも似たような引数を持っています。

void example(int a, int b, ...);
void exampleB(int b, ...);

現在 example コール exampleB を呼び出しますが、変数引数リストの変数を変更せずに渡すにはどうしたらよいでしょうか。 exampleB (を修正することなく、変数引数リストに変数を渡すにはどうしたらよいでしょうか(これはすでに他の場所でも使用されているため)。

どのように解決するのですか?

直接はできません。 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...
}