【发布时间】:2010-12-22 20:27:39
【问题描述】:
我想知道是否可以在运行时将字符粘贴为 C 中的标记。有点像,
a = OPERATION(3, 4, '+')
将被处理到,
a = 3 + 4
有没有办法做到这一点?
编辑:我想添加更多信息。显然,这不能用预处理器来完成。我想知道是否有一条捷径可以做,
int i;
char sign[] = "+-*/";
for (i = 0; i < 4; i++)
printf("%d\n", OPERATION(3, 5, sign[i]));
我知道我们可以创建一个函数,
int OPERATION(int a, int b, char c);
但这不是我要问的。
【问题讨论】:
-
我想知道是否有办法让预处理器做到这一点。
-
那为什么首先是一个字符呢?
-
如果我理解正确,您希望在编译时将运行时发生的事情处理成代码,而不需要预处理器。但是,C 是一种静态语言,其中编译发生在 before 运行时。编译器缺乏预知能力。
-
可以使用 strtok() 完成简单的标记化。使用 yacc 等人可以完成更复杂的操作。如果你想要一个解释器来解析和执行语句,你可以选择在你的应用程序中嵌入一个解释器——默认情况下没有可用的 C 解释器。
-
如果您想在运行时拥有令牌,最好选择其他语言。 C 运行时对 C 语法一无所知。