_GUN_SOURCE宏

问题描述:在编译程序时,提示一个错误和一个警告。

error:storage size of tz isn’t know; 其中tz是struct timezone类型的变量。

warning:implicit declaration of function lstat;

 

使用man手册查了一下,发现tz需要加上sys/time.h头文件,lstat需要加上sys/lstat.h头文件,但这两个头文件都已经包含了,百思不得其解。

 

无意间搜到一种解决方案,在编译时加上-D_GNU_SOURCE(定义_GNU_SOURCE宏),于是照做,程序编译通过。继续了解了_GNU_SOURCE宏,发现它是在features.h中用于特性控制的一个功能测试宏,而上面提到的两个头文件sys/time.h, sys/stat.h都包含了features.h文件。

 

 

/* If _GNU_SOURCE was defined by the user, turn on all the other features.  */

#ifdef _GNU_SOURCE

# undef  _ISOC99_SOURCE

# define _ISOC99_SOURCE 1

# undef  _POSIX_SOURCE

# define _POSIX_SOURCE  1

# undef  _POSIX_C_SOURCE

# define _POSIX_C_SOURCE    200809L

# undef  _XOPEN_SOURCE

# define _XOPEN_SOURCE  700

# undef  _XOPEN_SOURCE_EXTENDED

# define _XOPEN_SOURCE_EXTENDED 1

# undef  _LARGEFILE64_SOURCE

# define _LARGEFILE64_SOURCE    1

# undef  _BSD_SOURCE

# define _BSD_SOURCE    1

# undef  _SVID_SOURCE

# define _SVID_SOURCE   1

# undef  _ATFILE_SOURCE

# define _ATFILE_SOURCE 1

#endif

 

其中_ISOC99_SOURCE, _POSIX_SOURCE, _XOPEN_SOURCE都是功能测试宏,用于指示是否包含对应标准的特性,而这些不同的特性源于过去20多年来进行的各种标准化工作(ANSI, ISO, POSIX, FIPS等),不同的标准支持实现了不同的特性,如系统时间的获取,stat结构是在ANSI标准中是不支持的,而定义了_GNU_SOURCE相当于开启了对所有特性的支持。

时间: 2024-11-01 02:46:07

_GUN_SOURCE宏的相关文章

关于__GNU_SOURCE 这个宏---如何开启【转】

关于__GNU_SOURCE 这个宏 转自:http://blog.csdn.net/stevenliyong/article/details/4160181 版权声明:本文为博主原创文章,未经博主允许不得转载. 今天发现一个奇怪的问题,即使#include sys/stat.h在使用  lstat 函数的时候还是会报warning: implicit declaration of function 'lstat' 另外同样的问题,即使include 了 sys/time.h还是会报warnin

宏定义的黑魔法 - 宏菜鸟起飞手册

宏定义在C系开发中可以说占有举足轻重的作用.底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行.而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似乎对宏的使用和依赖并不多.但是使用宏定义的好处是不言自明的,在节省工作量的同时,代码可读性大大增加.如果想成为一个能写出漂亮优雅代码的开发者,宏定义绝对是必不可少的技能(虽然宏本身可能并不漂亮优雅XD).但是因为宏定义对于很多人来说,并不像业务逻辑那样是每天会接触的东西.即使是能偶尔使

当年被马化腾和李彦宏看不起,阿里云如今营收超谷歌云计算

欧界报道: 如今,IT时代正在转向DT时代,云计算已经成为全球公认的趋势.一些巨头公司如亚马逊.微软.阿里巴巴.谷歌,甚至是百度.腾讯,都开始将云计算视为公司未来发展的目标.而国内起步最早的阿里巴巴旗下的阿里云已经开始尝到了云计算的甜头.   今年4月份, 德意志银行发布研究报告指出,阿里云年度净收入预估高于谷歌云计算,成为全球仅次于微软Azure和亚马逊的AWS的第三大云计算.其中仅去年第四季度的营收就达到1.28亿美元.    今天,我们都看到了阿里云的成功,但它并不是偶然的,也不是靠运气捡

实现一个TODO宏

实现一个TODO宏 实现一个能产生warning的TODO宏,用于在代码里做备忘,效果:  下面一步步来实现这个宏. Let's do it 手动让编译器报警(报错)可以用以下几个方法:  1 2 3 4 5 #warning sunnyxx #error sunnyxx #pragma message "sunnyxx" #pragma GCC warning "sunnyxx" #pragma GCC error "sunnyxx" 但我们知

vb和Excel简单运用嗯宏的用法

问题描述 vb和Excel简单运用嗯宏的用法 如何在点击Excel时运行已经录制的宏,在宏里面输入什么代码,求后台代码,求大神 解决方案 1.录制好宏,并取名. 2.在Excel文件的VBA环境中,双击ThisWorkbook进入代码窗口. 3.写入下列代码: Private Sub Workbook_Open() '已经录制的宏 End Sub

Excel2016怎么开启宏?

  Excel2016怎么开启宏?            1.打开Excel2016,点击左上角的文件,之后点击"选项".如下图 2.在弹出的"Excel选项"中在左侧选择"加载项" 3.然后在右侧管理中选择"Excel加载项",选择完成之后点击"转到"按钮 4.这是会弹出加载项对话框,把对话框中"分析工具库"勾选,勾选完成点击"确定"完成本次操作.如下图 5.此时在

李彦宏的经营理念和领导风格

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 从一个技术工程师,成长为一个杰出的企业经营管理者,李彦宏仅仅用了9年时间.当然,其背后是近40年的教育和经验积累.在并不太长的企业经营管理中,李彦宏形成了一套自己的管理风格和管理理念,这标志着李彦宏从一个平凡的创业者成为了一位为数不多的企业家.李彦宏的经营管理思想是百度能够发展到到今天这个规模的重要保障. 在李彦宏的管理思想中,人才观是最重要

iOS宏(自己使用,持续更新)

  // 直接从RGB取颜色(RGB 0xFF00FF) #define UICOLOR_FROM_RGB(rgbValue) \ [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]  

系统-宏碁v5-531 bios进不去开机 就显示"Operating system not found"

问题描述 宏碁v5-531 bios进不去开机 就显示"Operating system not found" 宏碁v5-531 一开始win8为了装win7系统进入pe系统手贱把所有磁盘格式化(bios此时能进去) ,重启后就提示 "bootmgr is missing " , bios就进不去了, 又按网上是说法把bios电池放电,重启后就提示"Operating system not found" ,bios依旧进不去 bios进不去光驱启