将数据作为代码传递

时间:2011-02-23 11:24:44

标签: c++

我正在尝试解释作为输入的公式:

y= y argv[1][s] 5;

例如,argv[1][s]可以是+ - *     y = y + 5;
    y = y * 5;

我可以使用特定值的检查,但更有趣的是找出为什么这不起作用。

  

错误C2146:语法错误:丢失   ';'在标识符'argv'之前

我认为发生的事情是+作为'+'传递,因此不会产生任何操作。有没有办法解决这个问题?

1 个答案:

答案 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;
}