1

您可以放置​​一个链接到比较矩阵或主要编译器可用的扩展列表。如果这些都不可用,您可以在您最喜欢的编译器中编写您使用或喜欢的扩展列表。

4

5 回答 5

4

到目前为止的 C++/ISO-C 风格注释://

于 2009-12-02T00:19:07.703 回答
2

嗯,这取决于您说“ANSI C”时是指 C89 还是 C99。由于大多数主流实现还不完全符合 C99,我将假设 C89。

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

  • long long必须是最常见的扩展;
  • 其次是允许访问union最后写入以外的成员;
  • inline可能在上面;
  • snprintf在很多地方都可以使用;
  • 允许在函数指针和 void 指针之间进行强制转换很普遍;
  • alloca

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

于 2009-12-02T00:07:58.320 回答
1

在嵌入式 C 的臭名昭著的编译器之一中,您可以独立于处理器的偏好为结构类型指定小端或大端。编写设备驱动程序非常方便,如果您记得不要通过int*忘记字节序的(比如说)访问其中一个字段。

你对特征矩阵是认真的吗?你认为 SO 成员没有更好的事情可做吗?

于 2009-12-02T00:09:14.247 回答
1

许多编译器允许匿名联合中的匿名结构,这对某些事情很有用,例如:

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;
于 2009-12-02T00:13:01.030 回答