Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c中使用inet_ntop时指针和整数之间的比较_C_Sockets_Gcc_Type Mismatch_Inet Ntop - Fatal编程技术网

在c中使用inet_ntop时指针和整数之间的比较

在c中使用inet_ntop时指针和整数之间的比较,c,sockets,gcc,type-mismatch,inet-ntop,C,Sockets,Gcc,Type Mismatch,Inet Ntop,从“man”页面上看,inet\u ntop似乎返回了一个字符串(const char*),与NULL相比应该是正确的。然而,在我的程序中,我在代码块的第一行得到一个编译器警告,它说: 警告:指针和整数之间的比较 。假设传入了正确的参数,这是否有问题: if(inet_ntop(address->sa_family, numericAddress, addrBuffer, sizeof(addrBuffer)) == NULL) { fputs("inval

从“man”页面上看,inet\u ntop似乎返回了一个字符串(const char*),与
NULL
相比应该是正确的。然而,在我的程序中,我在代码块的第一行得到一个编译器警告,它说:

警告:指针和整数之间的比较

。假设传入了正确的参数,这是否有问题:

    if(inet_ntop(address->sa_family, numericAddress, addrBuffer, sizeof(addrBuffer)) == NULL)
    {
        fputs("invalid address", stream);
    }
不幸的是,我无法区分哪一个是指针,哪一个是整数。提前谢谢

您是否包含了“arpa/inet.h”文件


“arpa/inet.h”包含inet\u ntop声明。如果不包含它,编译器将假定inet\u ntop返回一个int。

为什么它不发出一个未声明的函数或什么?@mattwaughan在C中,如果编译器发现一个未声明的函数,它将假定它返回
int
。当您将返回值与指针(
NULL
定义为
void*
)进行比较时,您会得到警告。当然,函数参数也会不匹配,这可能会导致未定义的行为。C语言(至少C89)有隐式函数声明的概念,其中没有原型的函数具有从函数调用中首次使用派生的返回类型和arg列表,但缺少这一点,它返回int并接受未指定但固定数量的参数。您可以在编译器选项中添加-Wmissing原型。非常有用,谢谢!我必须看看我缺少了什么标题。@Mattwaughan总是用
-Wall-Wextra
编译,这会告诉你更多的事情。