Oracle® Solaris Studio 12.4:C 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

6.4.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. 解析所有外部对象和函数引用,形成最终程序。