C ++没有编译,因为它说文件不存在,但它在同一目录中

时间:2017-01-13 17:01:28

标签: c++ compiler-errors g++ header-files

在一个文件夹中我收到了以下文件:

book.h,book.cpp,card.h,card.cpp

这些是book.h的内容。

class book {

public:
        string title;
        string author;
        string get_title();
        string get_author();

}

book::book(string title, string author){
   title = title;
   author = author;
}

这是我的book.cpp:

#include <book.h>
#include <iostream>
#include <string>

using namespace std;

string book::get_title(){

  return title;
}

string book::get_author(){
 return author;
}

int main(){

cout << ¨it works! \n¨ 
}

我尝试使用g ++ -c book.cpp进行编译,我不断收到错误消息:

book.cpp:1:18:致命错误:book.h:没有这样的文件或目录 编译终止。

2 个答案:

答案 0 :(得分:2)

之间的区别
#include <book.h>

#include "book.h"

是第一个仅在INCLUDE路径中查找文件book.h。后者在源文件所在的目录中首先查找文件,如果找不到,则在INCLUDE路径中查找该文件。 因此,您可以通过用引号替换尖括号或将目录添加到INCLUDE来解决您的问题。你可以通过像这样的

编译来做到这一点
g++ -I . -c book.cpp

答案 1 :(得分:0)

如果包含的文件属于您的&#34; Include&#34;

#include语句,则使用<>括号路径,通常(但不是唯一的)当文件来自库或C ++标准库时。

当文件是项目的本地文件并且是源代码的本地文件时,使用

""

如果你混淆起来,你将会度过一段美好时光。