我想知道如何在不在代码中键入函数调用的情况下动态调用C中的函数
我有不同的消息,例如:START
,STOP
,TEST
我在库中有函数:process_msg_START
,process_msg_STOP
,process_msg_TEST
我想调用正确的函数而不明确地键入Name,比如在C#中使用Reflections或动态运行时
你有什么想法?我是C的新手,我的搜索没有成功。
答案 0 :(得分:2)
不幸的是,编译后的程序在编译器/链接器完成工作后并不知道函数的名称。在程序运行时,像C#这样的解释语言保留了大部分源代码,因此解释器可以在代码库中搜索某些函数(我并不认为反射实际上是如何工作的)。
你唯一的解决方案是要么有一个将字符串/枚举绑定到函数指针的映射,要么在代码库中使用脚本语言执行类似的过程(如Lua)
答案 1 :(得分:1)
答案 2 :(得分:-1)
由于您是c ++的新手,因此学习预编译器指令可能会带您走一些路。例如。这段代码:
#include "stdafx.h"
#include <iostream>
//#define TEST "true"
int _tmain(int argc, _TCHAR* argv[])
{
std::cout << "a";
#ifdef TEST
std::cout << "b";
#endif
std::cout << "c";
return 0;
}
使用#define删除行中的//以打印“b”