【发布时间】:2010-02-02 14:16:40
【问题描述】:
我在一个 C 谜题中看到了这个问题!! 这真的可能吗?
如果函数名是字符串,我如何调用它? 是否可以使用用 scanf 读取的字符串直接用于调用 一个函数?
我已经想到了 if(strcmp(str,"string"))then 调用函数。
但是还有其他方法吗?
【问题讨论】:
-
是的 Qt 用它来实现信号槽
-
问题的根源在于编译器不会将函数的名称放入可执行文件中(调试版本可能除外)。 C 语言不要求编译器保留函数的名称。
-
什么是函数?代码编译和链接后就不可能说了。编译器可以为所欲为:创建新函数、删除旧函数(内联)等。
-
IIRC,如果有可能使用它的指针,编译器可以保留函数的非内联版本。