兄台在MTK吗?呵呵。
C本身不具备动态属性,你的最后一个想法应该没办法完美支持。
貌似我在哪里看到过一个依赖编译器的方法,类似hack。想不起来了……
拙见是用符号表+函数指针模拟,再用一个接口来负责符号与代码的映射。
这样的做法很常见,比如动态链接库,dll里保存着符号表和代码,由加载函数实现映射。
或者system()函数,参数传递给shell,shell做的映射。
typedef void (* function)(void);
typedef struct _LIB{
char * name;
function exec;
}LIB;
static LIB lib[100]; // build your own lib.
void invoke(char * name)
{
if(name == lib
.name)
lib.exec();
}
再利用宏做一些trick,让代码看起来更像reflection风格……