有没有不支持ANSI C 89的平台?

时间:2012-02-13 11:06:40

标签: c cross-platform

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

但是有没有不支持ANSI C 89的平台?

我不确定J2ME,iPhone等等。

2 个答案:

答案 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.它必须有额外的代码来克服硬件限制(例如支持所需的类型,算术运算等)。