我正在尝试解释作为输入的公式:
y= y argv[1][s] 5;
例如,argv[1][s]
可以是+ - *
y = y + 5;
y = y * 5;
我可以使用特定值的检查,但更有趣的是找出为什么这不起作用。
错误C2146:语法错误:丢失 ';'在标识符'argv'之前
我认为发生的事情是+
作为'+'
传递,因此不会产生任何操作。有没有办法解决这个问题?
答案 0 :(得分:8)
不,因为这不是C ++的工作原理。您的代码必须在编译时有意义,以便编译器可以将其转换为一组固定的汇编程序指令。运行时文本未被“替换”;在某些解释语言中没有“eval”的等价物。
如果你想这样做,你需要做类似的事情:
switch (argv[1][s])
{
case '+':
y = y + 5;
break;
case '-':
y = y - 5;
break;
case '*':
y = y * 5;
break;
default:
std::cerr << "Unrecognised operator: \"" << argv[1][s] << "\"" << std::endl;
break;
}