C++ 以代码形式传递数据

C++ 以代码形式传递数据,c++,C++,我试图解释一个作为输入的公式: y= y argv[1][s] 5; 其中argv[1][s]可以是+-*例如。 y=y+5; y=y*5 我可以使用一个特定值的检查,但更有趣的是找出为什么这不起作用 错误C2146:语法错误:缺少 ';' 在标识符“argv”之前 我认为发生的情况是+被传递为“+”,因此没有操作结果。有没有办法来解释这个? < P>不,因为C++不是这样工作的。您的代码必须在编译时有意义,以便编译器可以将其转换为一组固定的汇编指令。中未替换运行时文本;在一些解释语言中没有类

我试图解释一个作为输入的公式:

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

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

错误C2146:语法错误:缺少 ';' 在标识符“argv”之前


我认为发生的情况是+被传递为“+”,因此没有操作结果。有没有办法来解释这个?

< P>不,因为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;
}

你能添加一些样例代码来澄清这个问题吗?你一定要抓住一本初学者C++教材!1:但可能没有编译正确的单词。编译了公共Lisp,但有eval;另外,文本并不是将代码作为数据处理的唯一可能的方法——请参见Lisp宏。这就是我所说的检查。取消引用不一定是字面意义上的。也许还有别的办法。如果处理器可以执行该命令,为什么它必须在程序中指定,而不是作为输入的一部分?@6502:你说得对。你能想出一个更好的术语吗?@用户:因为C++就是这样工作的。任何支持类eval机制的语言基本上都会在后台执行类似的操作,尽管显然它将运行更复杂的解析器@用户490735如果处理器可以执行命令。。。处理器无法执行该命令。String +对应CPU指令ADD或任何东西的知识是C++编译器的一部分,而不是CPU的一部分。这个知识在编译的C++程序的运行时是不可用的。