繁体   English   中英

ANSI C中存在(或使用)哪些最常见的扩展?

[英]Which most common extensions are there (or used) to ANSI C?

您可以为主编译器提供比较矩阵或扩展列表的链接。 如果这些都不可用,您可以在您喜欢的编译器中编写您使用或喜欢的扩展名列表。

到目前为止C ++ / ISO-C风格的评论://

那么,这取决于你说“ANSI C”时你的意思是C89还是C99。 由于大多数主流实现还不完全符合C99,我将假设C89。

在这种情况下,我会说(并且不包括POSIX或BSD套接字等特定API):

  • long long必须是最常见的延伸;
  • 然后允许访问除最后写入之外的union成员;
  • inline可能在那里;
  • snprintf可以在很多地方使用;
  • 允许在函数指针和void指针之间进行转换是很普遍的;
  • alloca

编辑:啊,是的,我怎么能忘记无处不在的//风格评论。

在其中一个臭名昭着的嵌入式C编译器中,您可以为结构类型指定小端或大端,而不依赖于处理器的首选项。 编写设备驱动程序非常方便,如果你记得不通过(比如说)忘记字节序的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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM