python的exec()函数的c++版本
Posted
技术标签:
【中文标题】python的exec()函数的c++版本【英文标题】:c++ version of python's exec() functions 【发布时间】:2019-12-11 09:27:36 【问题描述】:目标:
使用类似于 python 中的exec()
函数的某种函数执行一串 c(++) 代码。
python 中的示例:
exec('print("hello world")')
#out:
#hello world
问题:
python中是否有c++版本的exec?
【问题讨论】:
C 可以从代码运行系统命令...但是它也可以编译和运行 c 代码字符串...? C 不可解释... 如果你想运行系统命令你可以使用system但是C/C++代码必须编译 你为什么要做这样的事情?您需要解决的实际问题是什么? 【参考方案1】:但是,python 中有 c++ 版本的 exec 吗?
你想从一个字符串执行 C 语言语句!所以c是不可能的。
为什么
因为c是编译语言,所以程序先编译后执行。 它可能在python中作为其解释语言,意味着程序由 运行时的即时编译器。 希望这会有所帮助。
【讨论】:
【参考方案2】:嗯,从技术上讲,你(也许)可以。但这并不是一个合理的努力,还有其他脚本语言可以集成到 C++ 中。例如卢亚。想想看,如果你有一个方法int excuteCode(std::string code)
-
将该字符串复制到一个模板中,该模板将其包装在某个函数中。以下是这样一个模板的想法:
int userFunc()
%code%
-
将模板写入文件
从该文件构建动态库(例如 Windows 上的 .dll)(通过
system
或特定于操作系统的方法调用编译器和链接器)
将动态库加载到正在运行的程序中(同样,特定于操作系统的方法)
加载需要的方法userFunc
并执行。
【讨论】:
这太棒了【参考方案3】:#include <iostream>
int main(void)
system("python -c \"print('hello world')\"");
return 0;
对于系统命令...?
【讨论】:
以上是关于python的exec()函数的c++版本的主要内容,如果未能解决你的问题,请参考以下文章
通过 Boost Python 将 Python 函数转换为 C++,用作回调
如何使用 Boost Python 从 C++ bool 转换为 Python boolean?