C翻译阶段的具体例子

时间:2014-11-03 14:51:14

标签: c

根据C11标准(5.1.1.2翻译阶段),有8个翻译阶段。 任何人都可以为每个阶段提供一个具体的例子。

例如,在阶段1,有:

  

物理源文件多字节字符映射,在   实现定义的方式,源字符集...

我可以举例说明执行该映射时会发生什么,等等 其他阶段?

1 个答案:

答案 0 :(得分:2)

嗯,第一阶段的一个例子是将源代码存储为面向记录的格式,例如在大型机上的z / OS中。

这些数据集具有固定的记录大小,因此,如果您的数据集规范是FB80(固定,阻止,记录长度为80),则“行”:

int main (void)

将存储为十五个字符,后跟六十五个空格, no 换行符。

第一阶段翻译将在记录中读取,可能会删除尾随空格,并在将该行传递到下一阶段之前添加换行符。

根据标准,这也是处理三字符的阶段,例如在不支持??(字符的3270终端上将[转换为[

第五阶段的一个例子是,如果您在z / OS上编写代码(使用EBCDIC),但是为Linux / x86交叉编译(使用ASCII / Unicode)。

在这种情况下,字符串文字和字符常量中的源字符必须具有 ASCII 表示而不是EBCDIC表示。否则,您可能会在Linux机器上获得一些真正奇怪的输出。