【发布时间】:2017-08-18 18:14:27
【问题描述】:
我有两个短文件位于同一目录中。各内容如下所示。
-
文件
test.cpp包含:int main() { #include <test.h> } -
文件
test.h包含:syntax_error
在使用g++ 或clang++ 编译test.cpp 时,出现预期错误。
test.cpp:3:11: error: 'test.h' file not found with <angled> include; use
"quotes" instead
#include <test.h>
^~~~~~~~
"test.h"
但是,我也遇到了第二个错误,这似乎与第一个错误相矛盾。
In file included from test.cpp:3:
./test.h:1:1: error: use of undeclared identifier 'syntax_error'
syntax_error
^
本质上,第一个错误报告编译器找不到文件test.h,第二个报告编译器报告找不到文件中的语法错误。
这只是生成的两个错误。
我理解为什么编译器会报告第一个错误,并且在这种情况下我应该在#include 中使用引号。但是,为什么编译器在明确找到文件时却说找不到文件?还有,为什么会继续报“未找到”文件的错误?
【问题讨论】:
-
第一条信息很简单:它说,“我找到了,但是在错误的地方。用引号,卢克。”看起来你不小心使用了
<>。 -
感谢您的链接,尽管我熟悉
include <filename和#include "filename"之间的区别。尽管如此,编译器在这种情况下处理这种情况的方式似乎很奇怪。 -
不好奇。
<>具有实现定义的行为。这个特定的实现也会在本地文件夹中查找,并且非常友好地告诉您您的程序不兼容、原因以及如何修复它,然后继续查找更多错误。 -
如果您仔细阅读,该消息并没有说找不到该文件,而是说在
<>搜索路径之一中找不到该文件。如果根本找不到,您会收到另一条消息。
标签: c++ compiler-errors compilation include