3

ディレクトリ内にあるファイルのリストを取得する必要がある C プロジェクトに取り組んでいます。dirent.h を使用していますが、動作に問題があり、Linux でプログラムをビルドしています。

プログラムをビルドしようとすると、次のエラーが表示されます

myClass:error: âDIRâ undeclared (first use in this function)
myClass:408: error: (Each undeclared identifier is reported only once
myClass:408: error: for each function it appears in.)
myClass:408: error: âdirâ undeclared (first use in this function)
myClass:410: warning: implicit declaration of function âopendirâ
myClass:413: warning: implicit declaration of function âreaddirâ
myClass:413: warning: assignment makes pointer from integer without a cast
myClass:415: error: dereferencing pointer to incomplete type
myClass:417: warning: implicit declaration of function âclosedirâ

以下は私が使用しているコードです

int logMaintenance(void *arg)
{
    DIR *dir;
    struct dirent *ent;
    dir = opendir(directory);
    if (dir != NULL)
    {
        while ((ent = readdir (dir)) != NULL)
        {
            printf("%s\n", ent->d_name);
        }
        closedir(dir);
    }
    else
    {
        printf("Failed to read directory %i", EXIT_FAILURE);
    }
    return 0;
}

特に、Liunux の dirent.h ヘッダー ファイルをインクルードしたときに DIR が宣言されていないと表示された場合、これらのエラーの意味がわかりません。

ご協力いただきありがとうございます。

4

2 に答える 2

3

次のことを確認する必要があります。

  • そのファイルを#include <dirent.h>見つける"dirent.h"ためにヘッダーのシステム検索パスが使用されるように、
  • dirent.hプロジェクトのどこかに、代わりに拾うことができるファイルがありません。

この種の奇妙な問題をデバッグしようとするときは、前処理された出力を GCC に要求してgcc -Eください。含まれているファイル (パスを含む) を確認できます。それは大いに役立ちます。

また、Microsoft Visual Studio を使用している場合は、次の質問に進んでください:
Microsoft Visual Studio: opendir() and readdir(), how?

于 2012-04-30T15:59:24.690 に答える
0

よくわかりませんが、常にメイン関数が必要だといつも言われていたようです...しかし、C++の経験はわずか8か月(2学期)しかありません。安全のために練習するだけですが、次のものも使用します。

int main(int argc, char **argv)int main(int argc, char *argv[])いうより int logMaintenance(void *arg)

(dirent.h の使用中)。

于 2012-12-02T19:18:46.093 に答える