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