python - Python 中特定于平台的 Native

标签 python c native

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/

相关文章:

python - 在 App Engine 中处理大型云存储文件

使用 switch 指令的 c 程序不正确工作

c# - 在 Xamarin for Android (Visual Studio) 中启用 AOT

我们可以在 C 中从同一个结构中获得两个或多个 typedef 吗?

c - C 语言的多客户端服务器实现

android - 在android中编译 native 代码。错误 : undefined reference to 'main'

javascript - GWT native 函数 - 每个字符串的引用

Python平滑数据

python - 从关键字列表中查找所有句子到字典

python - 从 IP 地址确定 AWS 区域?