1

警告が表示されます

warning: comparison between pointer and integer

if次のコードを含む行:

char cwd[1024];

if (getcwd(cwd, sizeof(cwd)) != (char*)NULL)
    printf("%s\n",cwd);
else
    error_print("error in pwd");

どのようにそして何を修正する必要がありますか?

4

5 に答える 5

8

unistd.hを含めますか?そうでない場合は、Cコンパイラがgetcwdがintを返すと想定しているため、エラーが表示されます。

修正?unistd.hを含める

于 2011-04-13T19:47:06.557 に答える
4

getcwdのプロトタイプは

char *getcwd(char *buf, size_t size);

そう<unistd.h>しないと、戻り値の型がデフォルトで になりますint

ここでは、Ideone でさえ現在の作業ディレクトリを提供します。

于 2011-04-13T19:50:35.663 に答える
0

コンパイラが getcwd の戻り値を理解できるように、必要な .h を含めましたか?

あなたの c コンパイラの動作は、おそらくすべての未定義関数からの戻り値が int であると想定することです。

于 2011-04-13T19:48:53.013 に答える
-1

次のリンクの戻りタイプのセクションで、getcwdは失敗時にnullを返します。したがって、チェックする代わりに、チェックする!= (char *)NULLだけです。!= NULL

http://linux.die.net/man/3/getcwd

于 2011-04-13T19:47:20.917 に答える
-1

これで行を変更しますif (getcwd(cwd, sizeof(cwd)) != NULL)

于 2011-04-13T19:47:56.603 に答える