首頁  >  文章  >  後端開發  >  如何透過儲存在字串中的名稱來呼叫 C 函數?

如何透過儲存在字串中的名稱來呼叫 C 函數?

Susan Sarandon
Susan Sarandon原創
2024-10-28 11:04:30745瀏覽

How to Call a C   Function by Its Name Stored in a String?

C 中透過函數名稱呼叫函數(std::string)

C 中透過函數名稱呼叫函數的問題儲存在字串中已經出現。雖然涉及條件語句的基本方法是已知的,但仍在尋求更簡單的替代方案。

基本方法

一種簡單的方法涉及使用一系列 if-else 語句來匹配函數名稱和對應的函數指標。這種方法如下圖所示:

<code class="cpp">int function_1(int i, int j) { return i*j; }
int function_2(int i, int j) { return i/j; }

int callFunction(int i, int j, string function) {
    if(function == "function_1") {
        return function_1(i, j);
    } else if(function == "function_2") {
        return function_2(i, j);
    } ...
    return function_1(i, j);
}</code>

建議的替代方案

新方法旨在透過利用std::map 將函數名稱對應到函數指標。對於具有相同原型的函數,此技術可以提供更簡潔的解決方案:

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

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

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

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

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

此方法利用myMap[s](2,3) 語法,該語法檢索映射到字串s 的函數指標並使用提供的參數呼叫對應的函數。顯示的範例計算並輸出 5 作為“add”函數呼叫的結果。

以上是如何透過儲存在字串中的名稱來呼叫 C 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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