将字符串转换为C中的代码行

Raf*_*mal 1 c

我试图找到一种方法将字符串转换为我的代码行.

例如,我想尝试像这样:

int x=3;
char str[80];
gets(str);  // Assuming the user gives input: "x + 3"
y = str;
printf("%d",y); // Output: "6" (3 + 3)
Run Code Online (Sandbox Code Playgroud)

这样程序输出"6"(3 + 3).我想建立一个功能绘图仪.但在这里我卡住了,找不到任何方法.你能告诉我一种将这些字符串转换为代码行的方法吗?

Ker*_* SB 8

那是不可能的.C不是一种反思性语言,没有任何形式eval().

您当然可以调用外部编译器并运行生成的程序,或者您可以尝试在程序中找到包含C编译器的编译器库,但是没有"本机"解决方案.

AC程序是静态编译的,一次,编译后的二进制文件不知道它是用C语言编写的.编译过程完全与程序运行时无关.通常,只有解释型语言才能提供eval(),因为解释器在程序执行期间处于活动状态,并且可以动态操作程序代码.在像C这样的编译语言中,这整个想法都不适合,甚至没有意义.

如果要编写计算器,则必须实现自己的解析器和计算逻辑.

  • 使用C++并不会改变他所说的任何内容. (5认同)