我想制作一个科学计算器,用户在其中输入类似 3+4*(3-5)/2 3的内容,然后计算器可以返回该值。现在我试图找到一种方法来解析一串数学表达式。我知道有一些内置的解析器和算法,但我想知道是否可以通过使用#define
方法。基本上,我想使用#define 从字面上删除字符串中的@ 和“”,使其看起来像一个可以评估的表达式。在这个阶段,我不会使用未知变量,例如 x 或 3*k 或 a*b/c。全部都是数字和运算符,例如 3+4 和 3 2,可以由编译器直接计算。这是我想写的#define
:
#define eval@"(x)" x
在上面的代码中,eval 只是一个解析信号,@"x" 是需要解析的实际字符串,x 是一个数学表达式。翻译后,只剩下 x。例如,如果我写
double result = eval@"(3+4)";
编译器将读取
double result = 3+4;
(根据我对 的理解#define
)。但是,代码不起作用。我怀疑引号会混淆编译器并导致代码中断。所以我的问题是:任何人都可以提出使用的解决方案#define
吗?