2

関数gethostbynameを使用しようとしていますが、コードは次のとおりです。

int handleTCP(char *hostname, char* portNo){

    struct hostent *hp = gethostbyname(hostname);

    ...

}

戻り続ける:

21: warning: initialization makes pointer from integer without a cast

誰かが私の構文の何が悪いのか知っていますか?

ありがとう

4

2 に答える 2

3

あなたはするのを忘れました#include <netdb.h>。このファイルを含めなかったため、「デフォルトのint」ルールが実行されています。基本的に、Cでは、関数にプロトタイプがない場合、次のように想定されます。

int function_name();言い換えれば、「intを返し、不明な数のパラメーターを取ります」。

関数プロトタイプを適切に宣言すると(この場合はヘッダーを含めることで)、これを回避できます。

于 2011-11-29T22:32:19.053 に答える
0

ヘッダーファイルをインクルードするのを忘れたと思います。netdb.hコンパイラーはgethostbyname関数について何も知らず、整数を返すと想定します。その場合、整数をポインタに変換することになりますので、不満があります。コンパイラに正しい型情報を提供するには、ヘッダーを含める必要があります。

于 2011-11-29T22:33:50.470 に答える