This page详细介绍了如何使用 C 扩展 Python。但是,我没有看到任何有关根据操作系统使用不同 C 代码的信息。
我相当确定这是可以做到的,因为 python 库 colorama具有跨平台终端颜色支持,据我所知,Windows 和 Unix 需要不同的代码。然而,我翻阅了source code但什么也没找到。应该指出的是,我可能错过了它,因为 python 和 C 都不是我的专业领域。
TL;DR:如何使用特定于操作系统的 C 代码扩展 Python?
最佳答案
通常在 C 中,这是使用条件编译完成的。大多数编译器都会有一个指示操作系统的预处理器宏。例如:
#ifdef WIN32
// do Windows stuff
#else
// do something else
#endif
这些宏的名称是特定于编译器的。
或者,我的首选选项是将操作系统特定的代码放置在其自己的 DLL 或共享对象中,并将代码链接到独立于平台的 Python 接口(interface)。
例如,您将 Python 接口(interface)编写为可移植的,当您遇到特定于操作系统的内容时,您会调用您自己发明的通用函数。 Linux、Windows、OS X 等的每个共享库中都有此通用函数的副本,该副本在链接器时解析。
是否使用条件编译或操作系统特定的库取决于代码的不同程度。
关于python - Python 中特定于平台的 Native,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29569707/