2017-04-12 22 views
0

私は、オペレーティング・システムのコースのためのCを学んでいますし、単に教科書の指示に従って、このプログラムを書き終えています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

または質問を言い換える - ファイルはどこにありますか? – pm100

+0

どのテキストブックですか? –

答えて

0

include "quit.h"

単語#include(そのハッシュ#プレフィックスを持つ)は、ファイルが読み込まなければならないことを意味します。そのファイルの内容(この場合はquit.h)は、プログラムの中に入力されたのとまったく同じように処理されます。

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

コンパイラプロセス(を見て)正確にこれらの行:あなたは、ファイル名あなたのこのようなプログラムを持っている場合、単一の行

// this is a test 

が含まれている「TEST.H」を持っていると仮定:

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

#includeの後に指定されたファイル名は、アングルまたは引用符で囲むことができます。従来は、角度が使用されている場合は、

#include <stdio.h> 

のように、これはファイル(この場合はstdio.hの)は、いくつかのシステム標準ファイルまたはそうであることを意味します - 他の簡単な言葉で、他の誰かあなたのためにそのファイルを書いています。引用符が使用されている場合、指定されたファイルは何らかの形でコンパイルしているプログラムの一部とみなされます。 あなたのquit.hはこのようです。したがって、quit.hという名前のファイルが必要です。 "quit.h"を "quit"に変更すると、コンパイルするファイルの同じディレクトリにquitという名前のファイルが存在する必要があります。 (実際には物事はもっと複雑ですが、今は気にしないでください)。あなたの本を読んで、どこかに "quit.h"というファイルが何であるかを説明してください。

関連する問題