阶段转换

C 和 C++ 程序包含一个或多个源文件,每个包含某些程序文本。 一个源文件,与其一起包括使用 #include 预处理器指令包括的每个文件 (文件,但不包括条件编译指令移除的代码段 #if例如,名为 “翻译单元”。

源文件可以在不同的时间 —事实上,通常会只转换陈旧文件。 转换后的翻译单元可以处理单独的对象文件或对象的代码库。 各个,转换的翻译单元然后链接生成可执行程序或动态链接库 (DLL) (dll)。 有关可使用作为链接器输入文件的更多信息,请参见 LINK 输入文件

将元素可以通过使用:

  • 调用具有外部链接的函数。

  • 调用类有外部链接的成员函数。

  • 处理有外部链接对象的修改。

  • 文件的直接修改。

  • 进程间通信 (仅适用于基于 Microsoft windows 的应用程序)。

下面的列表描述编译器将文件阶段:

  • 功能映射
    在源文件的字符映射到内部数据源表示。 三字符序列转换为在此阶段中的单字符内部表示形式。

  • 行交错
    关闭反斜杠 (\) 的所有行和后面紧跟换行符连接与窗体从物理行的源文件的下一行逻辑行。 除非它是空的,源文件在不在反斜杠的换行符必须关闭。

  • 标记化
    源文件将预处理标记和空白字符。 在源文件中的注释用空格中的每一取代。 换行符。

  • 预处理
    预处理指令中执行,并且宏展开到源文件。 #include 语句中调用从开始在所有包含文本的上面的三个转换步骤的转换。

  • 字符集映射
    所有源字符集成员和转义序列转换为它们在执行字符集等效。 对于 Microsoft C 和 C++,源和执行是 ASCII 字符集。

  • 字符串串联
    所有相邻字符串和宽字符串标识符被连接。 例如,"String " "concatenation" 将变为 "String concatenation"。

  • 翻译
    语法上的和语义地分析所有标记;这些标记将转换为对象代码。

  • 连接
    所有外部引用解析创建可执行程序或动态链接库 (dll)。

编译器将发出警告或错误在遇到语法错误的阶段转换过程。

链接器解决任何外部将一个或多个单独处理的翻译单元引用并创建可执行程序或 DLL 与标准库。

请参见

参考

预处理器