LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 239|回复: 0

代码标准

[复制链接]
发表于 2024-1-21 23:51:16 | 显示全部楼层 |阅读模式

如果你想要编写可包含于 CPython 的 C 代码,你 必须 遵循在 PEP 7 中定义的指导原则和标准。这些指导原则适用于任何你所要扩展的 Python 版本。在编写你自己的第三方扩展模块时可以不必遵循这些规范,除非你准备在日后向 Python 贡献这些模块。

包含文件
使用 Python/C API 所需要的全部函数、类型和宏定义可通过下面这行语句包含到你的代码之中:

#define PY_SSIZE_T_CLEAN
#include <;Python.h>
这意味着包含以下标准头文件:<stdio.h>,<string.h>,<errno.h>,<limits.h>,<assert.h> 和 <stdlib.h>(如果可用)。

备注 由于 Python 可能会定义一些能在某些系统上影响标准头文件的预处理器定义,因此在包含任何标准头文件之前,你 必须 先包含 Python.h。
推荐总是在 Python.h 前定义 PY_SSIZE_T_CLEAN 。查看 解析参数并构建值变量 来了解这个宏的更多内容。

Python.h 所定义的全部用户可见名称(由包含的标准头文件所定义的除外)都带有前缀 Py 或者 _Py。以 _Py 打头的名称是供 Python 实现内部使用的,不应被扩展编写者使用。结构成员名称没有保留前缀。

备注 用户代码永远不应该定义以 Py 或 _Py 开头的名称。这会使读者感到困惑,并危及用户代码对未来Python版本的可移植性,这些版本可能会定义以这些前缀之一开头的其他名称。
头文件通常会与 Python 一起安装。 在 Unix 上,它们位于 prefix/include/pythonversion/ 和 exec_prefix/include/pythonversion/ 目录,其中 prefix 和 exec_prefix 是由向 Python 的 configure 脚本传入的对应形参定义,而 version 则为 '%d.%d' % sys.version_info[:2]。 在 Windows 上,头文件安装于 prefix/include,其中 prefix 是为安装程序指定的安装目录。

要包括这些头文件,请将两个目录(如果不同)都放到你所用编译器用于包括头文件的搜索目录中。 请 不要 将父目录放入搜索路径然后使用 #include <pythonX.Y/Python.h>;这将使得多平台编译不可用,因为 prefix 下与平台无关的头文件包括了来自 exec_prefix 的平台专属头文件。

C++ 用户应该注意,尽管 API 是完全使用 C 来定义的,但头文件正确地将入口点声明为 extern "C",因此 API 在 C++ 中使用此 API 不必再做任何特殊处理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表