2017-04-12 141 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」。

相關問題