【问题标题】:C translation phases concrete examplesC 翻译阶段的具体例子
【发布时间】:2014-11-03 14:51:14
【问题描述】:

根据 C11 标准(5.1.1.2 翻译阶段),有 8 个翻译阶段。 谁能为每个阶段举一个具体的例子。

例如在第一阶段有:

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

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

【问题讨论】:

  • 这些阶段中的大多数都是不言自明的。有没有特别令人困惑的地方?
  • 是的,即1和5。你能给我一些多字节映射或转义转换的具体例子吗?

标签: c


【解决方案1】:

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

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

int main (void)

将存储为这 15 个字符后跟 65 个空格,并且 没有换行符。

第一阶段的翻译会读入记录,可能会去掉尾随空格,并添加一个换行符,然后将行传递到下一阶段。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多