首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存在哪些C GNU-ism?

存在哪些C GNU-ism?
EN

Stack Overflow用户
提问于 2010-01-30 16:20:05
回答 3查看 739关注 0票数 3

我最近正在将一个项目从GCC移植到clang(在这个项目中,我修复了一些C GNU-ism)。这让我思考:存在哪些C GNU-isms(在GCC中支持的对C语言的扩展,这些扩展没有标准化)?有没有一个全面的清单?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-30 16:22:20

这是一个非常全面的清单,直接来自于GCC的网站。似乎有相当多,所以我祝你好运筛选通过它!

http://gcc.gnu.org/onlinedocs/gcc-4.2.0/gcc/C-Extensions.html

票数 8
EN

Stack Overflow用户

发布于 2010-01-30 17:32:24

尽管有很多扩展,我也尊重Beta的回答,但您的项目不太可能依赖于其中的许多扩展。可以在GNU构建中禁用扩展,因此只需这样做就可以提前警告代码库中的任何潜在不兼容性。

您可能会遇到其他问题,例如,事实是,GCC支持大多数C99功能,而一些流行的编译器不支持(特别是微软的VC++ )。因此,在测试代码库时,您可能也想禁用C99特性。

票数 0
EN

Stack Overflow用户

发布于 2010-02-01 17:20:30

我发现的最好的GNUisms之一是在填充结构时显式的键声明。

代码语言:javascript
复制
 struct canmsg_t {
      short     flags;
      int       cob;
      canmsg_id_t   id;
      unsigned long timestamp;
      unsigned int  length;
      unsigned char data[CAN_MSG_LENGTH];
 };

 canmsg_t msg = 
 {
      ["flags"] = 0x00;
      ["cob"]   = 0;
      ["id"]    = 0x534;
      ["timestamp"] = 0;
      ["length"] = 1;
      ["data"] = { 0 };
 }

这不允许跳过成员或对它们重新排序,如果这样做只会抛出一个错误,但对于100+元素结构,这变得非常有价值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2167267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档