警告が表示されます
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");
どのようにそして何を修正する必要がありますか?
unistd.hを含めますか?そうでない場合は、Cコンパイラがgetcwdがintを返すと想定しているため、エラーが表示されます。
修正?unistd.hを含める
getcwdのプロトタイプは
char *getcwd(char *buf, size_t size);
そう<unistd.h>
しないと、戻り値の型がデフォルトで になりますint
。
ここでは、Ideone でさえ現在の作業ディレクトリを提供します。
コンパイラが getcwd の戻り値を理解できるように、必要な .h を含めましたか?
あなたの c コンパイラの動作は、おそらくすべての未定義関数からの戻り値が int であると想定することです。
次のリンクの戻りタイプのセクションで、getcwdは失敗時にnullを返します。したがって、チェックする代わりに、チェックする!= (char *)NULL
だけです。!= NULL
これで行を変更しますif (getcwd(cwd, sizeof(cwd)) != NULL)