如何在c++中实现Python函数exec()

How to implement Python function exec() in C++?

本文关键字:函数 exec Python 实现 c++      更新时间:2023-10-16

Python函数exec()是一个很好的编程工具。

例如:

/******************************************************
 * we have array names={"ali","hamed"}
 * goal is declare string ali="ali" and hamed="hamed"
 ******************************************************/

Python code:

# used for command
# below line is a syntax python
# in python we dont declare variable
list=["ali","hamed"]  #python syntax
#in python we dont wite {
#python work with tab insteed of {}
for i in list:
    temp = i + ' = "' + i + '"' #temp is a string 
    exec(temp)

我的问题是:c++中是否存在类似的函数?如果没有,如何在c++中实现它?

Python的exec和其他语言中的类似功能(即JavaScript中的eval)只工作,因为这些是解释的语言,其中变量在运行时定义。

你不能直接在c++中做你所要求的,因为它是一种编译语言,要求所有变量和它们的名称在编译时是已知的。

您可以这样做,但这不是微不足道的,它只会继续工作安装了c++编译器的系统。基本上,c++是编译过的,所以如果你想执行一些c++的字符串,您必须编译它:将其写入文件(可能使用附加的样板文件(如某些包含),调用编译器(与system)建立一个DLL,然后加载DLL。

在实践中,即使你做了所有的努力,你可能发现它没有你想象的那么有用。因为c++需要静态几乎所有东西的声明,很难编写像这样的小片段,并让它们可用。(你例如,是否必须将其封装在函数中,然后生成extern用于它使用的所有变量。)c++不支持这类事情出于软件工程的原因;非常这些特性使得像Python这样的语言对于小型,快速编写程序,造成严重的维护问题时用于大规模健壮的软件。不同的语言为不同的目的而设计。它很容易创建使用Python作为顶层粘合剂的混合语言系统(你想要一个你所描述的设施),和调用c++来完成繁重的工作(在这些工作中,这样的功能可以实现)允许用户随意触发核心转储)。

或者,您可以在c++中实现一个小语言。为保留用户定义的变量,例如,使用std::map;而不是声明变量。(毕竟,这是什么

如果你打算使用字符串作为参数,这不是一个好主意!你可以简单地使用id生成器函数并给你将要使用的每个字符串一个id,或者如果你在使用一个类你可以把那个函数放在构造函数中。根本不需要exec() !!