标题: 是不是GCC的BUG?
souldump
小试牛刀
Rank: 2
注册用户



UID 126416
精华 0
积分 5(积分有什么用?)
帖子 153
阅读权限 10
注册 2005-7-9
状态 离线
发表于 2007-4-3 21:43  资料  个人空间  短消息  加为好友 
是不是GCC的BUG?

#include <stdio.h>(Y}3_W#i M@O0@rb
#include <stdlib.h>
Q6A/V.E&GP*bHwww.linuxeden.com#include <string.h>
dC{        {Z?www.linuxeden.com#include <sys/un.h>
2IT,exs^9SI#include <sys/types.h>
O([*{)nbxwww.linuxeden.com#include <sys/socket.h>
7O;U5d
X*h4n*S&^D
#include <netinet/in.h>
?WL$\])|5Mg#include <unistd.h>j`w7h5F
#include <errno.h> d k/Q&F*dw

_0T,vb9^6j0@;{char *
6z5~)lSE'Ywww.linuxeden.comsock_ntop(const struct sockaddr *sa, socklen_t salen)
z4f(mn-i#Pp1@y0Z6GLinux伊甸园论坛{
:~;\I5[}QUGLinux伊甸园论坛    char        portstr[8];
DP+y$p~j jSLinux伊甸园论坛    static char str[128];        /* Unix domain is largest */
l}Z;n[$qs`\!hj
Z;v4}$ca"}WI
wwww.linuxeden.com
    switch (sa->sa_family) {'M:c:vu%A)V
M)t Vu

    case AF_INET: { b-XU
bgD

        struct sockaddr_in    *sin = (struct sockaddr_in *) sa;
(M3S
I;OL7xN$P
www.linuxeden.com)^
n\.SA+Vt

        if ( inet_ntop(AF_INET, &sin->sin_addr, str, sizeof(str)) == NULL)
-EeKwo.NU5O1H            return(NULL);
V3YZI#vX        if (ntohs(sin->sin_port) != 0) {www.linuxeden.com"]3NTn"y!GH
            snprintf(portstr, sizeof(portstr), ":%d", ntohs(sin->sin_port));
M B
xV/D,Au
            strcat(str, portstr);Nbz!z4w
        }
~E4xY5[x        return(str);
hZS3|MF'M
eZ
    }
v*o(L#XNfLinux伊甸园论坛    default:www.linuxeden.com(c
v d0v4G`s

        snprintf(str, sizeof(str), "sock_ntop: unknown AF_xxx: %d, len %d",Linux伊甸园论坛`?/O o v9qA
                 sa->sa_family, salen);2^.`1lo6Z)G
        return(str);www.linuxeden.com"ZZw7A!d)G\1z
    }
ryV$m        \)b#s    return (NULL);
}R5@        OG`6H_4~W} /** end sock_ntop **/
m Y        HB8Vts^Linux伊甸园论坛
7x*`Qy0_YYo}这个函数,我用gcc -c 编译时提示:Linux伊甸园论坛+b u0ZT4NT+x:lr
sockaddr.c: 在函数 ‘sock_ntop’ 中:.I/K~4R9M2T1q
sockaddr.c:340: 警告:比较指针和整数
aR _H1z,U就是这句: ( inet_ntop(AF_INET, &sin->sin_addr, str, sizeof(str)) == NULL)Linux伊甸园论坛RD ]W4j I!NG
这是UNP上的代码,但是如果我给改成:Linux伊甸园论坛1p2bf1j&kgD#v
( ! inet_ntop(AF_INET, &sin->sin_addr, str, sizeof(str)))
_+e3cT9nG![1~e就没有警告了,Z#q v.t#C`\
c SG

这是不是GCC的BUG?
BB9?D T;Z
z:z%a3L-{www.linuxeden.com
为何inet_ntop的返回值类型被认为是整型??

顶部
不容错过的IBM 集群技术资源汇总
zhuomingliang
自由撰稿人
Rank: 4
荣誉版主



UID 131385
精华 21
积分 4(积分有什么用?)
帖子 2537
阅读权限 10
注册 2005-8-26
状态 离线
发表于 2007-4-4 08:36  资料  个人空间  主页 短消息  加为好友 
不是,如果返回是整形,就不会出错了

顶部
 



当前时区 GMT+8, 现在时间是 2008-5-17 11:49

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.073899 second(s), 5 queries

清除 Cookies - 联系我们 - Linux伊甸园 - Archiver - WAP