• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
小比丘
博客园    首页    新随笔    联系   管理    订阅  订阅
GCC默认的标准不是ANSI C,而是GNU C90

我以前以为GCC默认的C标准是ANSI C,但是看了文档才知道默认标准是C90 with GNU extensions。

"extensions"有那些?看这里:http://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html#C-Extensions

如果想要返璞归真,只遵循ANSI C,编译时加上-ansi选项即可(再加-pedantic选项,确保编译器使用该标准)。

加上这个选项后,你会发现好多平时无错的地方,编译时却出错。
最普遍的错误是"// 开头的单行注释",因为它在ANSI C中是不允许的,所以整行报错。

来看一个特殊的例子吧

按理说,__func__ 是C99的特性,用ANSI C标准编译为什么没报错呢? 我也不知道

posted on 2012-07-21 05:14  小比丘  阅读(3349)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3