warning: format ‘%s’ expects argument of type ‘char *’和warning: backslash and newline separated by

关于程序中产生的警告:

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>


你可能感兴趣的:(warning: format ‘%s’ expects argument of type ‘char *’和warning: backslash and newline separated by)