可以将字符串从指针数组转换为变量名吗?

问题描述 投票:0回答:3

我想要解决一个数学方程式给出的字符串指针数组

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)
c arrays pointers
3个回答
4
投票

编译器无法为您执行此操作,您必须将字符串解析为其组件(变量,常量,运算符),然后自己应用相应的操作。


1
投票

不,你想要的是不可能的,因为在C代码的编译版本中,“变量名”的概念不存在。

如果你想要实现这类功能,你必须在进入编译部分之前这样做,即在预处理部分。

否则,实现“可能”想要的更灵活的方法是使用函数指针(如果您愿意,可以使用“回调”)。您可以定义不同的函数来执行某些作业,然后在运行时,您可以选择要调用/调用的任何已定义的函数,并将结果收集到所需的变量中。


1
投票

有很多方法可以做到这一点,例如你可以解析每个表达式做一些模式匹配,然后从中创建和表达,这当然说起来容易做起来难。

但是我找到了一个我还没有测试过的库,它可以做你想要的(或承诺这样做),这里是链接:

http://partow.net/programming/exprtk/index.html

© www.soinside.com 2019 - 2024. All rights reserved.