inet_ntoa warning: format '%s' expects type 'char *', but argument 2 has type 'int'

转载 2013年12月05日 16:29:10

原文地址:http://1023mmmm.blog.163.com/blog/static/388402252013710103029193/

原本在ubuntu10.04运行好好的程序。换到12版本原先的警告就变成了一大堆错误。

好吧好吧,挨个修改修改。but段错误了有木有


最后定位到inet_ntoa。but这是系统函数,我的参数绝对木有错误有木有,百度了下,幸好有人跟我翻了一样的错误
问题解决的原因堪称奇葩:
http://www.cnblogs.com/renhao/archive/2012/03/08/2385194.html

直接把人家的东西复制过来吧,

以下是转来的:

发现出错在 inet_ntoa 那一行。查看了 inet_ntoa 的帮助,没有发现什么特别的地方。

试着打开编译的warning开关看看有没有什么发现:
 
  1. [shengkui@uranus ~]$ gcc -g -o getaddr getaddr.c -Wall
  2. getaddr.c: In function 'get_host_ip':
  3. getaddr.c:26: warning: implicit declaration of function 'inet_ntoa'
  4. getaddr.c:26: warning: format '%s' expects type 'char *', but argument 2 has type 'int'
inet_ntoa 没有声明,是因为没有加必须的头文件。
inet_ntoa 的返回值是 “char *”, 而编译器似乎把它的返回值当成了int?是这个导致的错误吗?
在64位的Linux 下,int是32位的,而指针(在这里是 char *)是64位的。问题应该就是出在这里!
 
我把 inet_ntoa 需要的头文件加上去:
  1. #include <sys/socket.h>
  2. #include <netinet/in.h>
  3. #include <arpa/inet.h>
编译,运行,结果正确,没有段错误!

笔者按:上面描述了一个发现问题解决问题的方案,发现错误后原作者加了-Wall选项,编译后多了一条warning: implicit declaration of function 'inet_ntoa'的提示,笔者看到这个问题准备自己解决“inet_ntoa 的返回值是 “char *”, 而编译器似乎把它的返回值当成了int?是这个导致的错误吗?”纠结了半天,也想过加上-Wall选项,但是感觉-Wall只是提示警告,现在警告已经有了,没想到加上多了个警告提示,这个提示正式解决问题的方法。

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 ...

[C/C++]warning: format '%c' expects argument of type 'char*', but argument 2 has type 'int' [-Wforma

format '%c' expects argument of type 'char*', but argument 2 has type 'int'

'NoneType' object has no attribute '__getitem__'和argument of type 'NoneType' is not iterable 异常的解决办法

python多线程采集新浪微博GPS数据,存入Mongodb。Mongodb要求经纬度的严格顺序为[longtitude, latitude],而微薄返回的顺序正好相反。所以在转换时,报出如上图所示异...
  • era_misa
  • era_misa
  • 2014年04月03日 11:03
  • 24317

PostgreSQL customize inet_aton, inet_ntoa function in text type like MySQL.

PostgreSQL的类型支持比较强大, 除了主流的文本, 日期, 时间, 数字, 还支持JSON, 货币, 网络, 几何, 枚举, 数组, 范围, XML, 布尔, 全文检索, 比特, 复合等数据类...

“passing argument 2 0f “request_irq” from incompatible pointer type”导致中断申请失败和模块无法加载

今天在些key的driver的时候。。。写完了编译出现一个warmming如下: warning: passing argument 2 of 'request_irq' from incompat...

Packet type http and httph in {inet,ssl}:setopts/2

转载:http://erlang.2086793.n4.nabble.com/Packet-type-http-and-httph-in-inet-ssl-setopts-2-td2121721.ht...

Python之Headers value 1 must be of type str or bytes, not <class 'int'>错误的解决

Python之Headers value 1 must be of type str or bytes, not 错误的解决

FreeGLUT Tips: Resolve compile error C2664: cannot convert argument 2 from '_TCHAR *[]' to 'char **'

解决编译OpenGL/FreeGLUT应用程序时遇到的编译错误:error C2664

Warning: mysqli_fetch_array() expects parameter 2 to be integer, string given……解决方案

今天在写一个小小的php验证页面,代码如下:

Name for argument type [java.lang.String] not available, and parameter name information not found in

1、错误描述[ERROR:]2015-11-15 21:13:48,029 [异常拦截] exception.ExceptionHandler java.lang.IllegalArgumentExc...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:inet_ntoa warning: format '%s' expects type 'char *', but argument 2 has type 'int'
举报原因:
原因补充:

(最多只允许输入30个字)