-1

readdir_r の関数呼び出しで引数が不足しているため、エラーが発生します。readdir_r の関数プロトタイプは次のようになります

int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);

ここで、dirp - ディレクトリ ストリーム、エントリはディレクトリ内の次のエントリ、結果は返されたアイテムへのポインタです。

私はreaddir_rを次のように使用しています

int re = readdir_r( dir , &entry); 

機能させるには、3 つの引数すべてをプロトタイプとして渡す必要がありますか?

4

2 に答える 2

1

機能させるには、3 つの引数すべてをプロトタイプとして渡す必要がありますか?

はい、機能するには 3 つのパラメーターを渡す必要があります。既に宣言したように、関数には 3 つのパラメーターが必要です。

例えば

関数が次のように宣言されている場合int foo(char,int);

ここでは、引数の数とその型を指定しました。同じ数のパラメーターで関数を呼び出し、関数宣言と同じ順序で引数を渡す必要があります。

上記の関数を呼び出す必要があります

  int i=foo('a',1024); 

以下のように上記の関数を呼び出さないでください

    int i=foo(10); 

関数が次のように宣言されている場合 int foo();

ここでは、引数の数を指定しませんでした。異なる数の引数を渡すと、単に無視されます。

このように関数を呼び出すことができます

int i=foo();

int i=foo(10);       

int i=foo(10,20);

しかし、これら 3 つの結果は同じです。これらの場合、単にパラメータを無視します。


また、パラメーターをとらずに int を返す関数を宣言する良い方法は次のとおりです。

     int foo(void);

可変数の引数をとる関数を書きたい場合は、Variadic_functionを参照してください。

于 2013-10-12T04:16:09.137 に答える