C での名前による関数の呼び出し
C では、特に動的プログラミングやコードにおいて、関数を名前で呼び出すことが必要になることがよくあります。世代コンテキスト。さまざまな関数呼び出しに「if」と「else」を使用するのは基本的なアプローチですが、多数の関数の場合は煩雑になる可能性があります。
考えられる解決策の 1 つは リフレクション です。ただし、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 中国語 Web サイトの他の関連記事を参照してください。