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引起的问题,可以通过如上设定尝试解决。


C_语法概念_print类型函数详解

print类型函数详解    printf()函数是格式化输出函数系列中比较有具有普遍特点的, 一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格...
  • yangtalent1206
  • yangtalent1206
  • 2012年05月07日 13:58
  • 5151

gcc中格式化输出函数的研究

ChinaUnix首页 > 精华文章 > C/C++ > 正文   [精华] gcc中格式化输出函数的研究...
  • dai_xiangjun
  • dai_xiangjun
  • 2014年11月21日 19:53
  • 1333

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

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

编译时出现如下警告“implicit declaration of function Set_Disp_Port_SpeedMode"

     今天编译子模块代码时出现如下警告:"implicit declaration of function Set_Disp_Port_SpeedMode".找了半天不懂得问题出在哪里,到goog...
  • linbe_ice
  • linbe_ice
  • 2007年01月31日 14:06
  • 29983

使用c99编译出警告信息:implicit declaration of function ‘usleep’

按常规来讲,出现 “implicit declaration of function ‘xxxx’ ” 是因为头文件未包含导致的! 但是usleep的头文件unistd.h已经包含,所以一时间让人很困...
  • u012564936
  • u012564936
  • 2014年12月16日 08:39
  • 5139

_vsnprintf 用法

可以和va_start va_end结合使用,实现对参数的合并 _vsnprintf,C语言库函数之一,属于可变参数。用于像字符串中打印数据、数据格式用户自定义。 函数...
  • sunshine_okey
  • sunshine_okey
  • 2012年03月23日 10:21
  • 8276

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

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

Linux 编程 出现警告warning: implicit declaration of function 'pread'('pwrite')

本来是看了《UNIX高级环境编程》后用pread()和pwrite()来代替read(),write()。           原因多进程同时使用lseek()操作文件偏移量,是会改变共享的V节点...
  • justwwwa
  • justwwwa
  • 2012年03月31日 20:51
  • 1964

xcode 编译旧程序遇到的一些问题解决汇总

1、Implicit declaration of function 'inet_addr' is invalid in C99 添加 #include 2、Implicit declaration...
  • xiaochunzao
  • xiaochunzao
  • 2015年03月04日 00:29
  • 1398

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

1  没有把函数所在的c文件生成.o目标文件2  在函数所在的c文件中定义了,但是没有在与之相关联的.h文件中声明在头文件中定义的数据只能被其他文件包含一次,但是函数可以被其他函数重复包含多次;因此,...
  • yylklshmyt20090217
  • yylklshmyt20090217
  • 2009年07月28日 16:16
  • 17628
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:implicit declaration of function 'asprintf' 警告的解决
举报原因:
原因补充:

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