解决gcc报错 error: implicit declaration of function ‘inet_addr’ [-Werror=implicit-function-declaration]

此文首发于我的个人博客:zhang0peter的个人博客


下午在写代码编译时报了如下这些错:

/home/mininet/openvswitch-2.10.1/datapath/linux/datapath.c:239:1: error: implicit declaration of function socket [-Werror=implicit-function-declaration]
 int sock_cli = socket(AF_INET,SOCK_STREAM, 0);
 ^
/home/mininet/openvswitch-2.10.1/datapath/linux/datapath.c:245:5: error: implicit declaration of function inet_addr [-Werror=implicit-function-declaration]
     servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");  
     ^
/home/mininet/openvswitch-2.10.1/datapath/linux/datapath.c:246:5: error: implicit declaration of function connect [-Werror=implicit-function-declaration]
     if (connect(sock_cli, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0)
     ^
/home/mininet/openvswitch-2.10.1/datapath/linux/datapath.c:248:9: error: implicit declaration of function perror [-Werror=implicit-function-declaration]
         perror("connect error!");
         ^
/home/mininet/openvswitch-2.10.1/datapath/linux/datapath.c:250:4: error: implicit declaration of function send [-Werror=implicit-function-declaration]
    if(send(sock_cli, skb->data,skb->tail-skb->data ,0)<0){

我的函数是没问题的,问题是我调用了未声明的函数,也就是说编译器不知道这个函数的返回值和参数列表

需要在前面加个函数声明就可以了,或者在对于的.h文件中增加函数声明。