2017-04-12 155 views
0

我学习下一个操作系统课程和刚刚写完这个程序按照教科书说明:GCC致命错误:quit.h没有这样的文件或目录

#include <dirent.h> 
#include <stdio.h> 
#include "quit.h" 

int main(int argc, char **argv) { 

     DIR *dir; 
     struct dirent *direntry; 

     arg_check(2, argc, "Specify a directory\n", 1); 

     if ((dir = opendir(argv[1])) == NULL) 
       quit("opendir", 1); 

     while ((direntry = readdir(dir)) != NULL) 
      printf("%10d %s\n", direntry->d_ino, direntry->d_name); 

     closedir(dir); 
     exit(0); 
} 

这段代码正好从复制教科书,但quit.h似乎导致编译文件。我尝试将“quit.h”切换为“quit”,但这些都没有奏效,我也找不到有关这个特定问题的其他问题。

+2

文件'quit.h'与C源文件位于同一目录吗? –

+0

或更改问题 - 文件quit.h – pm100

+0

哪本教科书? –

回答

0

include "quit.h"

#include(连同其散列#前缀)表示一个文件在被读取;该文件的内容(在这种情况下为quit.h)就像在程序中键入一样。假设你有一个文件名为“test.h”,其中包含了单线

// this is a test 

,如果你有一个这样的程序:

#include "test.h" 
int main(int argc, char **argv) 
... 

编译器进程(看到)正是这些线路:

// this is a test 
int main(int argc, char **argv) 
... 

#include后指定的文件名可以用角或引号括起来。传统上,如果使用的角度,就像

#include <stdio.h> 

这意味着该文件(stdio.h中在这种情况下)是一些系统标准文件左右 - 的其它简单的话,其他人已经为你写了这个文件。如果使用引号,相反,指定的文件被认为是您正在编译的程序的一部分。 Your quit.h看起来像这样。所以你必须有一个名为quit.h的文件。如果将“quit.h”更改为“quit”,则名为quit的文件必须存在于正在编译的文件的同一目录中。 (其实事情比较复杂,但现在不在意)。阅读你的书,它应该解释什么是文件“quit.h”。

相关问题