如何在c++中实现Python函数exec()
How to implement Python function exec() in C++?
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() !!
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- Python 的 exec() 函数的 C++ 版本
- PHP 网站在传递图像作为参数时未运行 exec 函数
- 将 PHP 中的 $_POST 变量传递给由 exec() 函数运行的C++程序
- 如何在 exec 循环停止后正确使用 QSharedPointer 的析构函数<QObject>?
- 使用CreateProcess尽可能使用单个命令参数调用exec*函数
- 在参数中传递给 exec*() 函数系列的内存会发生什么情况
- 如何在linux中使用c或c++在不使用system()或exec()函数的情况下调用像pwd或ls-l这样的系统函数
- 如何在c++中对exec()进行析构函数友好的调用
- 禁用C和Pascal中的system()和exec()函数
- c++通过exec函数杀死子进程,但不杀死父进程和正常运行时间
- 如何在c++中实现Python函数exec()
- 使QDialog显示show或exec函数