如何在c ++中使用循环生成代码?

时间:2014-01-18 21:54:31

标签: c++

是否可以将原始字符串转换为c ++中的代码?

例如我有一个字符串

string s = "cout << "Hello World";";

我想以编程方式生成该代码。也许我想动态地在程序的各个部分插入该代码。

cout << "Hello World";

此外,是否可以使用c ++中的循环生成代码,可能使用预处理器指令?

2 个答案:

答案 0 :(得分:4)

看起来你想要的东西类似于Lisp,Python,perl和许多其他语言提供的eval函数。

C ++中没有这样的功能。它在设计上并不存在。

解决这个缺失功能​​的一种方法是让程序编写程序,将其存储在文件中,调用编译器,并调用编译器生成的可执行文件。那很难看。你做的任何事都会变得相当难看。

答案 1 :(得分:2)

  

是否可以将原始字符串转换为c ++中的代码?

C ++通常是一种编译语言。这使得你想要做的事情变得棘手。为了实现您所说的内容,您需要在运行时解释代码(在这种情况下,通过绑定到Python或Lua等脚本语言可以更好地服务),或者嵌入或调用C ++编译器并将代码传递给它,然后运行它。

这可能是XY problem,并且您正在查看的解决方案对于您尝试解决的实际根问题过于复杂。可能有一个想法是建立一个为什么你正在尝试这样做的描述,因为可能有一种更简单的方法来实现你想要的最终结果。

相关问题