我试图找到一种方法将字符串转换为我的代码行.
例如,我想尝试像这样:
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).我想建立一个功能绘图仪.但在这里我卡住了,找不到任何方法.你能告诉我一种将这些字符串转换为代码行的方法吗?
那是不可能的.C不是一种反思性语言,没有任何形式eval().
您当然可以调用外部编译器并运行生成的程序,或者您可以尝试在程序中找到包含C编译器的编译器库,但是没有"本机"解决方案.
AC程序是静态编译的,一次,编译后的二进制文件不知道它是用C语言编写的.编译过程完全与程序运行时无关.通常,只有解释型语言才能提供eval(),因为解释器在程序执行期间处于活动状态,并且可以动态操作程序代码.在像C这样的编译语言中,这整个想法都不适合,甚至没有意义.
如果要编写计算器,则必须实现自己的解析器和计算逻辑.