0

我正在为操作系统课程学习 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”切换为“退出”和“退出”,但这些都不起作用,而且我找不到关于这个特定问题的其他问题。

4

1 回答 1

0

包括“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.h”更改为“quit”,则一个名为的文件quit必须存在于您正在编译的文件的同一目录中。(实际上事情更复杂,但现在不要介意)。阅读你的书,它应该解释什么是文件“quit.h”。

于 2017-04-12T16:33:02.833 回答