我在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。但我仍然得到这个错误。
答案 0 :(得分:0)
CMSG_FIRSTHDR
宏可能没有进行适当的类型转换,因此您必须自己完成:
cmsg = (struct msghdr *) (CMSG_FIRSTHDR(&msg));
也可能是宏内部存在一些不正确的转换,在这种情况下,你无法做任何事情,因为它在系统头中。
答案 1 :(得分:-1)
请检查SOL_SOCKET的类型。它需要是int。 如果结果不匹配,请更改结构中“cmsg_level”字段的类型。
我猜SOL_SOCKET是一个指针,可能是int *