inet_ntoa函数在编译时候报 ”warning: assignment makes pointer from integer without a cast“ 告警

编译有告警代码

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>

/*

    char *inet_ntoa(struct in_addr in)
    int inet_aton(const char *cp, struct in_addr *inp);
    // struct sockaddr_in server_ip;

*/

int main()
{
    int ret = 0;
    char *ip_addr = NULL;
    struct in_addr byte_addr = {0};
    const char ipaddress[] = "192.168.1.5";

    ret = inet_aton(ipaddress, &byte_addr);
    printf("inet_aton return %d\n", ret);
    printf("byte addr is (0x%x)\n", byte_addr.s_addr);
    printf("byte 0 value[0x%x]\n", *((unsigned char *)&byte_addr.s_addr));
    printf("byte 1 value[0x%x]\n", *((unsigned char *)&byte_addr.s_addr + 1));
    printf("byte 2 value[0x%x]\n", *((unsigned char *)&byte_addr.s_addr + 2));
    printf("byte 3 value[0x%x]\n", *((unsigned char *)&byte_addr.s_addr + 3));

    /* 将网络字节序的IP地址再转换为字符串形式*/
    ip_addr = inet_ntoa(byte_addr);
    printf("ip address [%s]\n", ip_addr);
    
    return 0;
}


编译结果:

gcc -E server.c -o server.i
gcc -S server.c -o server.s
server.c: In function 'main':
server.c:30:13: warning: assignment makes pointer from integer without a cast
gcc -g server.c -o server
server.c: In function 'main':
server.c:30:13: warning: assignment makes pointer from integer without a cast


很奇怪为什么会报告警

inet_ntoa函数原型

/* Convert Internet number in IN to ASCII representation.  The return value
   is a pointer to an internal array containing the string.  */
extern char *inet_ntoa (struct in_addr __in) __THROW;

该定义在 arpa/inet.h中,所以在代码中包含这个头文件,再次进行编译,无告警

gcc -E server.c -o server.i
gcc -S server.c -o server.s
gcc -g server.c -o server

已经没有告警;应该是没有包含正确的头文件,导致引用了错误的原型声明(没有找到这个错误的原型声明在哪个头文件中)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值