Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2315142
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: LINUX

2010-06-25 21:39:44

_POSIX_SOURCE
定义了之后, 才可以使用fdopen, 否则该函数的原型未定义

_SVID_SOURCE定义了之后才可以include ipc.h

_POSIX_C_SOURCE 定义为 199309 才可以使用 nanosleep

定义 _BSD_SOURCE , 才能使用strdup

这些是在使用 -std=c99 -Wall 时会出现的bug

另外, 通过一些软件包的 *-config -cflags这种方式来编译时. 一部分编译选项的控制权就交给了这些软件, 如

net-snmp-config --cflags
的输出为

-DINET6 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -g -lcrypto -DNETSNMP_NO_INLINE -Dlinux -I/usr/include/rpm -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE -I. -I/usr/include/net-snmp

内容之多, 会半会让人忽略它, 只要它不引起问题, 但里面有一项是
-Wdeclaration-after-statement
这可是一个不讨人喜欢的选项, 即使我在前面已经指定了-std=c99, 因为该选项出现在后面的缘故, 仍然会对混杂在代码中间的变量声明发出警告. 而这已经是C99 和C++都明确支持且提倡的用法.


阅读(725) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~