Eclipse c++包含头两次错误
Eclipse c++ include header twice Error
我有以下文件:
Polygon.h
Polygon.cpp
Rectangle.cpp
Triangle.cpp
Polygon.h被包裹
#ifndef __POLYGON_H
#define __POLYGON_H
#endif
问题是:当我点击"全部构建"时,我在矩形和三角形的cpp文件中交替出现错误(它们没有得到头文件),要么是它们中的任何一个,但永远不会同时出现。
错误描述:
C1083:无法打开包含文件:"Polygon.h":没有这样的文件或目录
我用了两次,因为矩形和三角形都继承了多边形。
编辑
包含使用#include <Polygon.h>
完成
暂停?
如果在代码中写入#include <Polygon.h>
,编译器将在其预定义的include(如语言头文件和其他文件)中查找Polygon.h
,但不在当前文件夹(文件中已写入include)中查找。您可以告诉编译器(使用命令行参数或在IDE中单击它),它应该也使用#include < >
语法在其他地方查找包含的文件。
然而,最好以不同的方式编写#include
:#include "Polygon.h"
,因为这意味着,"在当前文件的文件夹中查找它。",这正是你想要的。
可以更一般地解释第二CCD_ 7语法。如果你把一个文件放在双引号里,你可以告诉文件的完整路径。事实上,它不是以/
或C:\
或类似的名称开头的,这意味着,请查看当前文件夹内部。
根据注释进行编辑
据我所知,(根据大多数开源项目)包含头文件被认为是更好的做法,头文件是使用#include "file.h"
的项目的一部分,头文件也是使用#include <file.h>
的外部库的一部分。这是因为整个项目(不包括任何库)是一个完整的单元,结构(如果移动)将立即移动,并且在项目的不同更改中,结构可能保持不变。
另一方面,图书馆是为自己而存在的。您可以假设有人(将使用您的项目)已经安装了库(甚至可能自定义)。如果他们需要使用您的项目和他们自己的库,他们只会指示编译器使用他们的库版本编译您的项目,如果您使用#include <>
语法将其包括在内。使用其他语法会给他们带来麻烦。
您可以将所有头文件放在一个大文件夹中,并让编译器在其中查找,但想象一下一个包含数百个头文件的项目。那个文件夹会很乱,无法管理。此外,为标题命名是很常见的,这样你就不必查看内部来了解它的作用。现在想象一下,你的项目中需要一个queue
,最终得到的是#include <queue.h>
。您的外部库(您在整个项目中都在使用)中没有一个标题queue.h
的可能性有多大?这样的话,您最终会遇到混乱的编译器,因为它无法决定您指的是哪个queue
。
此外,我相信找到#include "file"
会比#include <file>
快一点,但这确实是一个很小的开销。
现在,编译器正在搜索标头,但找不到它们。只需转到:左键单击您的项目属性->c/c++常规->路径和符号->包含在语言中选择GNU c++,转到添加按钮并添加您的包含目录
- g++的分段错误(在NaN上使用to_string两次时)
- 使用 getline(cin, var) 两次在进行字符串比较时会产生错误 (==)
- C++两次定义相同的函数会导致错误
- 我用C++做了一个计算器,但我对"type of calculator"的要求循环了两次。有人可以帮助指出我的错误吗?
- 调用某个回调函数两次会导致分段错误:Nan
- 连续两次写入数字时出现逻辑错误 (C++)
- 当我叫了两次时,set_union得到了错误的结果
- 为什么我的代码两次收到此错误"undefined reference to `Pizza::Pizza()' "
- CC1plus 错误:输出文件名指定两次
- 我找不到导致我的数组在运行两次案例并退出后损坏的错误
- C++程序 尝试连续运行两次写入循环时显示".. stopped working"错误
- 当我调用绑定的 c++ 类函数两次时出现 lua 错误?
- Eclipse c++包含头两次错误
- 错误LNK2005:已经定义了包含头文件两次
- 当事件循环在错误槽启动时,ContentNotFoundError发生时,QNetworkReply发出两次错误信号
- 为什么两次使用ifstream对象会导致错误
- 同一实例的停靠图标两次,非 GUI 进程错误地标记"not responding"
- 不知道出了什么问题 - 两次程序隔离错误
- 为什么当我删除两次相同的内存时没有错误?
- LNK2005错误.看起来一个文件被包含了两次