Фатальная ошибка GCC: quit.h нет такого файла или каталога
Я изучаю C для курса по операционным системам и только что закончил писать эту программу в соответствии с инструкциями из учебника:
#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" и "выйти", но ни один из них не сработал, и я не могу найти другие вопросы по этой конкретной проблеме.
1 ответ
включить "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) - это какой-то системный или стандартный файл или около того - другими словами, кто-то другой написал этот файл для вас. Если вместо этого используются кавычки, указанный файл считается частью программы, которую вы компилируете. Ваш выход из игры кажется таким. Таким образом, вы должны иметь файл с именем quit.h
, Если вы измените этот "quit.h" на "quit", файл с именем quit
должен присутствовать в том же каталоге файла, который вы компилируете. (На самом деле все сложнее, но пока не обращайте на это внимания). Прочитайте свою книгу, где-то должно быть объяснено, что это за файл "quit.h".