首頁 >後端開發 >C++ >如何在 C 中按名稱動態呼叫函數?

如何在 C 中按名稱動態呼叫函數?

DDD
DDD原創
2024-10-26 08:46:02325瀏覽

How to Dynamically Invoke Functions by Name in C  ?

在C 語言中按名稱呼叫函數

在C 語言中,經常需要按名稱呼叫函數,尤其是在動態程式設計和程式碼中世代背景。雖然對不同的函數呼叫使用“if”和“else”是一種基本方法,但對於大量函數來說,它可能會變得很麻煩。

一個潛在的解決方案是反射。然而,C 缺乏本機反射功能。或者,可以使用以下解決方法:

函數指標的std::map

透過建立一個將函數名稱(std::strings) 與函數指針,動態呼叫函數變得更容易:

<code class="cpp">#include <iostream>
#include <map>

int add(int i, int j) { return i + j; }
int sub(int i, int j) { return i - j; }

typedef int (*FnPtr)(int, int);

int main() {
    // Initialization:
    std::map<std::string, FnPtr> myMap;
    myMap["add"] = add;
    myMap["sub"] = sub;

    // Usage:
    std::string s("add");
    int res = myMap[s](2, 3);
    std::cout << res;
}</code>

在這個方法中,字串鍵「add」會擷取對應的函數指針,然後使用指定的參數呼叫該函數指針。這種方法可以透過動態確定要呼叫的函數的名稱來實現靈活的函數呼叫。

以上是如何在 C 中按名稱動態呼叫函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn