说我有这个非常基本的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行,代码就会正确编译。
答案 0 :(得分:3)
当编译器遇到包含错误时,它会报告并停止编译。当然可能的情况是并非所有编译器都会报告一个人为友好的错误,但是肯定他们都将终止,因为这个错误是致命的,因为syam在他的评论中指出了这一点。
答案 1 :(得分:2)
如果找不到特定的#include
文件,则编译失败并因错误而停止。编译无法继续进行。
有趣的是,没有明确指定缺少标题的行为。标准中唯一相关的部分是 16.2 / 1 [cpp.include] :
#include
指令应标识可由实现处理的头文件或源文件。
注意使用必须,它不给编译器选择:必须用文件内容替换#include
指令。如果文件不存在,程序就会格式不正确。
答案 2 :(得分:0)
准确地说,如果找不到该文件,那么编译器将无法运行程序,如果需要正确运行代码。如果您的代码访问该文件中的某些内容,则该程序将不会根据需要运行。