如何将字符串转换为c中的命令?

Asi*_*ani 0 c eval

在c中是否有办法将字符串转换为命令?例如:

void x(string n){
   //do something
}
void y(int n){
   //do something
}
void z(int n){
   //do something
}
stringForConvert="z(10);y(2);x(\"Its cool\");";
mysteryCommand(stringForConvert);
Run Code Online (Sandbox Code Playgroud)

请注意,我没有奢侈的写入另一个文件并进行编译.

unw*_*ind 5

不,因为C是一种编译语言,所以这并不容易.

C不像典型的动态/脚本语言那样工作,它依赖于大型运行时环境.这样的语言通常有一个函数(在PerlPython中,它被称为[ eval()])可以做你想要的,但是C不能这样做,因为编译器没有留在编译程序的"内部",它是一个单独的(并且公平)大)计划.

C可被编译为不运行任何类型的外部环境,但即使当你这样做有它的C运行时比编译器要小得多,一般.

您将不得不从程序中调用实际的编译器,或者自己完成所有操作.

当然,调用编译器需要您确切地知道要使用哪个编译器,并且它甚至可以从命令行使用.然后你可以使用eg system()来调用编译器,然后添加代码来检查输出是否正确生成,并使用另一个system()函数调用来运行新生成的程序.在程序和新编译的程序之间共享数据将非常复杂.

自己动手需要熟悉编译器完成的许多任务,例如标记化,解析和评估解析树.这些是大型复杂的主题,这里不容易通过示例显示.