您可以放置一个链接到主编译器可用的比较矩阵或扩展名列表。如果这些都不可用,你可以编写你喜欢的编译器中使用的扩展名列表。ANSI C有哪些最常用的扩展(或使用)?
回答
嗯,这取决于你说的是“C”还是C99。由于大多数主流实现尚未完全符合C99标准,因此我将假设C89。
在这种情况下,我会说(不包括像POSIX或BSD套接字特定API):
long long
一定是最常见的扩展;- 后面允许访问除最后写入的
union
成员; inline
可能在那里;snprintf
在很多地方都有售;- 允许在函数指针和空指针之间进行转换是普遍的;
alloca
编辑:稀释是,我怎么能忘了无处不在的//
风格的注释。
我想在最后可用,然后C99。我认为C99上的所有附加功能都是基于对C89的扩展,因此它们变成了ANSI并删除了扩展名“标签”。当然,如果C89的扩展没有获得ANSI规范,它仍然是C99的扩展。 – Maniero 2009-12-02 00:35:42
C99是由ISO而不是ANSI编写的。然后ANSI就批准了它,但即使如此,“ANSI C”更符合我的经验,因为在C99出现之前卡住了这个名字。当它由ISO工作组而不是ANSI工作组设计时,可能会考虑在开始调用C99“ANSI C”时有点奇怪,因此它比C89“更低ANSI”。或者,它可能主要受gcc的-ansi选项影响。 – 2009-12-02 02:35:38
在一个臭名昭着的嵌入式C编译器中,您可以独立于处理器的偏好指定一个结构类型的little-endian或big-endian。编写设备驱动程序非常方便,如果您记得不通过(比如)忘记字节序的int*
来访问某个字段。
你是否认真对待特征矩阵?你认为SO成员没有更好的办法吗?
一些编译器允许匿名联合内的匿名结构,这对于有些东西是有用的,例如:
struct vector3
{
union
{
struct
{
float x, y, z;
};
float v[3];
};
};
// members can now be accessed by name or by index:
vector3 v;
v.x = 1.0f; v.y = 2.0f; v.z = 3.0f;
v.v[0] = v.v[1] = v.v[2] = 0.0f;
C++/ISO-C风格评论迄今为止://
- 1. 哪些是Visual Studio中的/ Za选项禁用的ANSI c语言扩展?
- 2. ANSI C图形扩展
- 3. 哪些PaaS最适合需要扩展的Meteor JS应用?
- 4. 有哪些GNU C扩展可用,这些扩展在C99中实现并不重要?
- 5. NetworkX有哪些可扩展性问题?
- 6. 使用ANSI C
- 7. 使用C++的PHP扩展
- 8. 扩展范围中有哪些变量可用(如窗口,gBrowser)?
- 9. C# - 使用扩展方法
- 10. 扩展使用C#泛型?
- 11. openGL或UIKit?哪个最好 ?哪些应用使用openGl哪些应用使用UIKit?
- 12. Magento扩展 - 有用或没有
- 13. 哪种语言使用.pde扩展名?
- 14. 确定使用哪个共享扩展
- 15. 我在哪里使用扩展名?
- 16. 用C++扩展Ruby?
- 17. 使用C或C++库作为PHP扩展
- 18. 如何编译使用GNU C扩展的C代码
- 19. 编写firefox或chrome扩展需要哪些技能? (如Adblock)
- 20. 扩展开发中使用C/C++
- 21. 的Protobuf C++的扩展使用
- 22. 如何找出哪些表访问最多或经常在Oracle 10g中使用
- 23. 使用python扩展C++应用程序
- 24. 如何使用通用扩展了C#
- 25. 什么是当前使用C#扩展Excel的最佳方式?
- 26. 使用扩展方法的扩展类
- 27. 是否可以“扩展”或重新使用Eclipse扩展点?
- 28. 选择铬扩展中的元素有哪些方法?
- 29. 找出最常见的扩展在Array
- 30. TYPO3 Extbase扩展现有的扩展使用自己的扩展模型?
@ pixelbeat很好的编辑,谢谢。 – 2009-12-07 16:35:26