implicit declaration of function 'asprintf' 警告的解决

原创 2015年07月09日 15:03:02


asprintf使用起来非常方便,但是它是GNU扩展的C函数库,使用的时候经常会有如下警告:

warning: implicit declaration of function 'asprintf' [-Wimplicit-function-declaration]


调查发现asprintf的头文件是stdio.h,在该头文件中

#ifdef __USE_GNU
/* Write formatted output to a string dynamically allocated with `malloc'.
   Store the address of the string in *PTR.  */
extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
		      _G_va_list __arg)
     __THROW __attribute__ ((__format__ (__printf__, 2, 0))) __wur;
extern int __asprintf (char **__restrict __ptr,
		       __const char *__restrict __fmt, ...)
     __THROW __attribute__ ((__format__ (__printf__, 2, 3))) __wur;
extern int asprintf (char **__restrict __ptr,
		     __const char *__restrict __fmt, ...)
     __THROW __attribute__ ((__format__ (__printf__, 2, 3))) __wur;
#endif

但是__USE_GNU是glibc内容的宏定义,我们不能在自己的代码中定义,因此要怎么解决呢?


解决方法:

在makefile中加入编译选项 -D_GNU_SOURCE

如果是用CMake,需加入add_definitions (-D_GNU_SOURCE)


如果遇到类似因#ifdef __USE_GNU引起的问题,可以通过如上设定尝试解决。


相关文章推荐

linux c之出现warning: implicit declaration of function ‘exit’ [-Wimplicit-function-declaration]这个问题

1、问题: 2、解决办法: 先执行下面命令看exit在哪个头文件下面man exit 效果如下图 加上头文件编译,问题就解决了 3、 总结     如果看到编译的时候提示wa...

如何解决warning:implicit declaration of function 'xxx'

上图所示的警告信息,意思是:在main.c中隐式定义了函数‘timer_init’ 'init_GPB'和‘init_irq’这三个函数。 我们都知道在c中函数调用需要先声明后调用,那么我用了以下两...

asprintf的头文件没定义

Intro:编译程序,出现 BUG 是个不那么开心的事情。 比如:asprintf的头文件没定义 通过搜索引擎搜索,往往得不到想要的答案。问题的关键是从源头出发,即函数定义的source code可...
  • guguant
  • guguant
  • 2017年03月17日 20:17
  • 475

C语言中,函数不申明也能使用,但会出现warning: implicit declaration of function

这段时间,在看中心后台服务软件源码时发现,有很多自定义函数未经申明却能在主程序中被调用,主程序中没有包括上述函数的头文件,我在各个目录中也找不到上述函数的头文件。这就奇怪了,连使用标准库函数print...
  • soloopin
  • soloopin
  • 2012年10月10日 19:08
  • 10739

gcc编译器各种warning 解决方式

gcc 各种 warning 的解决方式

错误: 隐式声明函数‘kmalloc’ [-Werror=implicit-function-declaration]

编译时遇到这个错误,原因是没有包含头文件linux/slab.h. /home/xxha/study/char/memdev.c:152:2: 错误: 隐式声明函数‘kmalloc’ [-Wer...

implicit declaration of function 这种警告问题的原因及解决方法

http://blog.csdn.net/fpmystar/article/details/4168073 缺少头文件 最近在改进SD卡的SEP4020驱动时,在改掉所有的warning时老报...

解决warning:implicit declaration of function 'Xil_Out32' [-Wimplicit-function-declaration]

在SDK软件编译时出现  warning: implicit declaration of function 'Xil_Out32' [-Wimplicit-function-declaration]...

implicit declaration of function 这种警告问题的原因及解决方法

1  没有把函数所在的c文件生成.o目标文件2  在函数所在的c文件中定义了,但是没有在与之相关联的.h文件中声明在头文件中定义的数据只能被其他文件包含一次,但是函数可以被其他函数重复包含多次;因此,...

implicit declaration of function ‘malloc’的解决方法

You need to add: #include This file includes the declaration for the built-in function malloc. ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:implicit declaration of function 'asprintf' 警告的解决
举报原因:
原因补充:

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