在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中文網其他相關文章!