我正在寻找一个以字符串形式给出的数学方程式,如
指针数组char* equations = {"n+1", "n+2", "n*n+3"}
我希望编译器将上面字符数组中的字符串视为变量,例如“n”是一个变量。因此,当我将此字符串分配给'int'
时,它们将像这样的数学运算:
int a = n+1;
我认为下面的方法可以工作,但它肯定不起作用,因为我们不能将指针的数组分配给int。即使它确实如此,但它只是采用A = 65的代码,但这不是我的要求:
a = equations[0]; //(compiler assume it like a = n+1)
答案 0 :(得分:4)
编译器无法为您执行此操作,您必须将字符串解析为其组件(变量,常量,运算符),然后自行应用相应的操作。
答案 1 :(得分:1)
不,你想要的是不可能的,因为在C代码的编译版本中,"变量名" 的概念不存在。
如果你想要达到这种目的,你必须在进入编译部分之前这样做,即在预处理部分。
否则,一种更灵活的方式来实现你可能"想要使用函数指针(如"回调" ,如果你愿意的话)。您可以定义不同的函数来执行某些作业,然后在运行时,您可以选择要调用/调用的任何已定义的函数,并将结果收集到所需的变量中。
答案 2 :(得分:1)
有很多方法可以做到这一点,例如你可以解析每个表达式做一些模式匹配,然后从中创建和表达,这当然比说起来容易做起来容易。
但是我找到了一个我尚未测试过的图书馆可以做你想做的事情(或承诺这样做),这里是链接: