Sun Studio 12:C 用户指南

6.5.1 ISO C 转换阶段

这些转换阶段的顺序由 ISO C 指定。

替换源文件中的每个三字符序列。ISO C 正好有九个为弥补不完善的字符集而单独构造的三字符序列,它们是命名 ISO 646-1983 字符集之外的字符的三字符序列:

表 6–1 三字符序列

三字符序列 

转换为 

??=

#

??-

~

??(

[

??)

]

??!

|

??<

{

??>

}

??/

\

??’

^

ISO C 编译器必定理解这些序列,但我们建议不要使用它们。在您使用 -xtransition 选项时,只要 ISO C 编译器在转换 (–Xt) 模式下替换三字母(甚至是在注释中),它就会向您发出警告。例如,考虑以下情形:


/* comment *??/
/* still comment? */

??/ 变为反斜杠。该字符和后面的换行符被删除。结果字符为:


/* comment */* still comment? */

第二行的第一个 / 是注释的结尾。下一个标记是 *

  1. 删除每个反斜杠/换行符对。

  2. 源文件转换为预处理标记和白空间序列。每个注释有效地替换为一个空格字符。

  3. 处理各个预处理指令并替换所有宏调用。每个 #included 源文件在其内容替换指令行之前运行较早的阶段。

  4. 解释各个换码序列(形式为字符常量和字符串文字)。

  5. 并置相邻字符串文字。

  6. 各个预处理标记转换为常规标记,编译器正确分析这些标记并生成代码。

  7. 解析所有外部对象和函数引用,形成最终程序。