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++,用作回调

Python eval 与 exec 函数

python exec内置表达式--exec()

如何使用 Boost Python 从 C++ bool 转换为 Python boolean?

有没有办法通过 C++ 中的 OUT 参数接收 Python 中的返回值?

Python exec 函数