关于程序中产生的警告:
1,
echoserv.c:49:2: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=] printf("ip = %s\n", inet_ntoa(peeraddr.sin_addr)); ^2,
echoserv.c:11:24: warning: backslash and newline separated by space [enabled by default] exit(EXIT_FAILURE); \ ^
编写socket程序的过程中用到了这个函数:
char *inet_ntoa(struct in_addr inaddr);
返回:指向一个点分十进制数串的指针
不过,我写到程序中,却是产生了一个警告,(个人不太喜欢警告)
printf("ip = %s \n", inet_ntoa(peeraddr.sin_addr));
产生的这个错误简直都不能理解,明明这个函数的返回值是char *,刚好用%s来进行输出,但是编译器却给出了返回值为int的说法,实在理解不了,,,
后来,仔细的调试程序,发现程序的头文件并没有,当我将程序的头文件加上之后,就没有了这个警告
也就是说:这个函数在没有头文件的情况下,返回值确实为int,有头文件时,返回值为char *
2,在我用#define-do-while的时候
出现了这样的问题
程序如上,但是经过编译器的编译,程序同样性的产生了一个警告!!!
一开始,看到了错误然后没有太管,直接百度,耗费了好一阵时间,也没有找到直接性的解决办法,,,
最后,仔细看了看错误的原因,发现大概说的是:多了一个空格
如上,是去掉空格后的情况!!!,可以发现颜色都有不同的变化,,,哈哈,这回也明白了英语的重要性!!!
warning: assignment makes pointer from integer without a cast [enabled by default]
这种错误一般是:忘了加头文件
如:我使用gethostbyname函数的时候,忘了加头文件了,,,
其中:头文件为(Linux):#include<netdb.h>