在#include指令中排序

时间:2015-04-15 10:02:33

标签: c++ c

我理解

之间的区别
#include "xyz"

#include <xyz>

就每种情况下搜索的位置而言。

我想知道是否存在根据搜索和链接完成的排序。文件是否使用

#include "xyz" //as this is done in current working directory
在使用

链接文件之前链接

#include <xyz>

3 个答案:

答案 0 :(得分:2)

预处理器包含与链接无关。这是一种常见的误解。

没有假设任何一个包含对应于被链接的东西。请注意,标准库有许多标题,但通常只在链接发生时由单个库组成。

例如gcc(和大多数其他编译器)你可以先编译一个C文件,然后编译一堆其他的C文件,然后最后用所有必需的外部库链接所有目标文件。当您进行链接时,您将对已编译的文件(目标文件和库)进行操作;这些文件对预处理器指令在原始源中出现的顺序一无所知,但早已不复存在。

答案 1 :(得分:1)

#include "file"将在搜索包含路径之前搜索当前目录。没有机制来指定目标文件的链接顺序。

答案 2 :(得分:1)

#include file指令告诉预处理器将指定的file的内容视为出现在指令出现点的源程序中。

与链接无关。