python - Python 采用什么版本的 C?

标签 python python-2.7

据我了解,Python 的规范版本是用 C89 编写的。我有兴趣稍后可能会为 Python 编写一些基于 C 的扩展,但我对我应该使用哪个版本的 C 感到有点困惑(在 Python 文档中找不到)。由于 Python 在 C89 中,我应该在 C89 中编码还是 C11 代码也能工作?

最佳答案

自 C89 以来,C 作为一种语言只经历了相对较小的演变。在 C89、C99 和 C11 的交汇处编写代码非常容易,这就是我建议您做的(与其说是为了与 Python 接口(interface),后者更多是在 ABI 级别,不如说是一般源代码级别的最佳实践).

我没想到,通过将自己限制在 C89 中,您失去了 for (int i=0;…) 语法、可变长度数组和复数。

通过为 C99 编写代码,您将失去使用 C89 允许的隐式类型 int 声明变量的能力。这从来都不是一个好主意。

C11 清楚地表明,某些结构在以前的标准中不明确时是被禁止的:INT_MIN % (-1), (0,i++,j) + (0,j++, i)( discussion ; 见评论).

C99 中引入的最有用的补充可能是 C++ 风格的 // 注释。但大多数编译器甚至在 C99 发布之前就已经接受了这些作为扩展,因此没有理由在 2013 年避免使用它们。

关于python - Python 采用什么版本的 C?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16403311/

相关文章:

python pack 4 byte integer with bytearray struct.pack中的字节

python - 在 Windows 上安装 firebird RDBMS 绑定(bind)包时出错

python - 设置Python包的顶级

python - 当前在 Django 模板中获取主页 URL(域)的方法?

python - 将django模型连接到具有相同结构的不同表名

python - Python 中的 AWS Elastic Beanstalk 环境变量

python-2.7 - 如何在 Ubuntu 中将 python 2.7.12 升级到 python 2.7.14?

python - 使用 .readlines() 时摆脱\n

python - 无法使用 ctypes.windll.user32.GetWindowThreadProcessId 获取 processID

python - Python 3 和 matplotlib 中的 Unicode 绘图标记