是否有任何平台不支持ANSI C 89?

是否有任何平台不支持ANSI C 89?,c,cross-platform,C,Cross Platform,ANSI C 89似乎是编写跨平台库的最佳选择,因为许多平台(Windows、Unix、Linux、Mac、Android等)都支持它 但是否有任何平台不支持ANSI C 89 我对J2ME、iPhone等不太清楚。首先,ANSI C通常指C89,因此C89是多余的 iOS支持ANSI C以及大多数平台。J2ME是一个Java平台,默认情况下它根本不支持C 主要平台都支持ANSI C,但也有一些嵌入式平台不支持。我认为你不应该为这些担心。任何对于代码或数据来说内存太少的平台都不支持C。 根据第2

ANSI C 89似乎是编写跨平台库的最佳选择,因为许多平台(Windows、Unix、Linux、Mac、Android等)都支持它

但是否有任何平台不支持ANSI C 89


我对J2ME、iPhone等不太清楚。

首先,ANSI C通常指C89,因此C89是多余的

iOS支持ANSI C以及大多数平台。J2ME是一个Java平台,默认情况下它根本不支持C


主要平台都支持ANSI C,但也有一些嵌入式平台不支持。我认为你不应该为这些担心。

任何对于代码或数据来说内存太少的平台都不支持C。 根据第2.2.4.1节“翻译限制”的规定:

实施应能够翻译和执行至少一个 至少包含以下各项的一个实例的程序: 以下限制:

  • 复合语句的15个嵌套级别,迭代控制
    结构和选择控制结构

  • 8条件包含的嵌套级别

  • 12指针、数组和函数声明符(任意组合)
    修改算术、结构、联合或不完整类型
    在声明中

  • 31个由圆括号嵌套在完整声明符中的声明符

  • 在完整表达式中用括号嵌套的32个表达式

  • 127个标识符,在一个块中声明块范围

  • 一个函数定义中有31个参数

  • 一个函数调用中有31个参数

  • 字符串文字或宽字符串文字中有509个字符 (连接后)

  • 对象中的32767字节(仅在托管环境中)

  • 单个结构或联盟中的127个成员

  • 单个数据库中有15层嵌套结构或联合定义
    结构声明列表
如果仔细阅读本标准,您可能会发现其他要求

最后,如果有足够的内存,即使是较弱的平台也可以支持C。它必须有额外的代码来克服硬件限制(例如,支持所需的类型、算术运算等)