【发布时间】:2012-02-13 11:06:39
【问题描述】:
似乎 ANSI C 89 是编写跨平台库的最佳选择,因为许多平台(Windows、Unix、Linux、Mac、Android 等)都支持它。
但是有没有不支持 ANSI C 89 的平台?
我不确定 J2ME、iPhone 等..
【问题讨论】:
标签: c cross-platform
似乎 ANSI C 89 是编写跨平台库的最佳选择,因为许多平台(Windows、Unix、Linux、Mac、Android 等)都支持它。
但是有没有不支持 ANSI C 89 的平台?
我不确定 J2ME、iPhone 等..
【问题讨论】:
标签: c cross-platform
首先,ANSI C通常指的是C89,所以C89是多余的。
iOS 支持 ANSI C 以及大多数平台。 J2ME 是一个 Java 平台,默认情况下它根本不支持 C。
主要平台都支持ANSI C,但也有一些嵌入式平台不支持。我认为你不应该担心这些。
【讨论】:
任何用于代码或数据的内存太少的平台都不支持 C。 按照“2.2.4.1 翻译限制”部分中the standard 的要求:
实现应该能够翻译和执行至少一个 至少包含每一个实例的程序 以下限制:
复合语句的 15 个嵌套级别,迭代控制
结构和选择控制结构8 个嵌套级别的条件包含
12 个指针、数组和函数声明符(任意组合)
修改算术、结构、联合或不完整类型
在声明中31 个由括号嵌套在完整声明符中的声明符
32 个用括号嵌套在完整表达式中的表达式
...
- 在一个块中声明了127个块范围的标识符
...
一个函数定义中有31个参数
一个函数调用中有 31 个参数
...
字符串文字或宽字符串文字中的 509 个字符 (连接后)
对象中的 32767 个字节(仅在托管环境中)
...
- 单个结构或联合中的 127 个成员
...
- 15 级嵌套结构或联合定义在单个
结构声明列表
如果您仔细阅读该标准,您可能会发现其他要求。
最后,如果有足够的内存,即使是一个很弱的平台也可以支持 C。它必须有额外的代码来克服硬件限制(例如支持所需的类型、算术运算等)。
【讨论】: