在 python 源码中使用 __cplusplus

Posted

技术标签:

【中文标题】在 python 源码中使用 __cplusplus【英文标题】:use of __cplusplus in python source 【发布时间】:2017-01-24 08:26:28 【问题描述】:

python源码中头文件中的如下有什么用

#ifdef __cplusplus
extern "C" 
#endif

这是否意味着 Python 为我们提供了使用 C++ 编译器构建代码的功能。如果是,那么 使用 C 和 C++ 编译器构建 python 源代码有什么区别

【问题讨论】:

这意味着您可以使用 C/C++ 编译器构建 Python 本身 我无法想象使用 C++ 编译器(用于基础 python)而不是 C 有什么好处。其中一个原因可能是允许用 C++ 编写的扩展模块使用它们。另见boost.org/doc/libs/1_39_0/libs/python/doc/index.html 【参考方案1】:

Python API 仍然是纯 C。这些指令只允许在 C++ 代码中包含标头。

__cplusplus 宏是在使用 C++ 编译器编译代码时隐式定义的。所以这种方式extern "C"规范只有在看到它的编译器会支持时才会添加。

【讨论】:

以上是关于在 python 源码中使用 __cplusplus的主要内容,如果未能解决你的问题,请参考以下文章

在 python 源码中使用 __cplusplus

Python 的 enum 模块源码分析

python-flask-wtforms组件流程源码

python语言线程标准库threading.local源码解读

Python源码分析之dis

Python中如何查看模块的源码内容