如果#include无法找到文件会发生什么

时间:2013-06-13 20:02:57

标签: c++ include

说我有这个非常基本的c ++代码:

myCode.cpp:

#include <library1.h>
#include <library2.h>

int main() {
 // use some methods from library2
}

如果编译此代码但我的编译器找不到library1.h会发生什么?它会抛出任何特定错误吗?它还在寻找library2.h吗?它会跳过其余的#include语句并继续编译main吗?我问,因为我试图回答this SO question,其中添加一个.h文件导致编译器抱怨没有从另一个.h文件中查找方法。如果没有#include第一行.h行,代码就会正确编译。

3 个答案:

答案 0 :(得分:3)

当编译器遇到包含错误时,它会报告并停止编译。当然可能的情况是并非所有编译器都会报告一个人为友好的错误,但是肯定他们都将终止,因为这个错误是致命的,因为syam在他的评论中指出了这一点。

答案 1 :(得分:2)

如果找不到特定的#include文件,则编译失败并因错误而停止。编译无法继续进行。

有趣的是,没有明确指定缺少标题的行为。标准中唯一相关的部分是 16.2 / 1 [cpp.include]

  

#include指令应标识可由实现处理的头文件或源文件。

注意使用必须,它不给编译器选择:必须用文件内容替换#include指令。如果文件不存在,程序就会格式不正确。

答案 2 :(得分:0)

准确地说,如果找不到该文件,那么编译器将无法运行程序,如果需要正确运行代码。如果您的代码访问该文件中的某些内容,则该程序将不会根据需要运行。