首頁 > 後端開發 > C++ > 如何在不修改接收函數的情況下將變數參數從一個函數傳遞到另一個函數?

如何在不修改接收函數的情況下將變數參數從一個函數傳遞到另一個函數?

DDD
發布: 2024-12-18 01:03:15
原創
467 人瀏覽過

How Can I Pass Variable Arguments from One Function to Another Without Modifying the Receiving Function?

將變數參數傳遞給具有變數參數清單的函數

考慮兩個具有相似變數參數的函數:

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);
}
登入後複製

未修改的函數🎜>

void exampleB(int b, ...)
{
    va_list args;
    va_start(args, b);
    exampleV(b, args);
    va_end(args);
}
登入後複製

包裝函數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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板