1

Solaris で C プログラムをコンパイルすると、この警告が表示されます。

line 68: warning: improper pointer/integer combination: op "="

私のコードには含まれています

struct cmsghdr  *cmsg;

68行目は

cmsg = CMSG_FIRSTHDR(&msg);

構造体 cmsghdr および CMSG_FIRSTHDR は、socket.h で次のように定義されています。

#define  CMSG_FIRSTHDR(m)
--
--

struct cmsghdr {
        socklen_t       cmsg_len;  
        int             cmsg_level;
        int             cmsg_type; 
};

コードに socket.h を含めました。しかし、それでもこのエラーが発生します。

4

2 に答える 2

0

CMSG_FIRSTHDRマクロが適切な型キャストを行わない可能性があるため、自分で行う必要があります。

cmsg = (struct msghdr *) (CMSG_FIRSTHDR(&msg));

また、マクロ自体の内部に不適切なキャストがある可能性もあります。この場合、システム ヘッダーにあるため、何もできません。

于 2012-06-12T09:24:14.790 に答える
-1

SOL_SOCKET のタイプを確認してください。int である必要があります。一致しない場合は、構造体の「cmsg_level」フィールドのタイプを変更します。

SOL_SOCKET はポインターだと思います。おそらく int*

于 2012-06-12T08:35:31.657 に答える