【发布时间】:2009-12-02 00:03:05
【问题描述】:
您可以放置一个链接到比较矩阵或主要编译器可用的扩展列表。如果这些都不可用,您可以在您喜欢的编译器中编写您使用或喜欢的扩展列表。
【问题讨论】:
标签: c compiler-construction programming-languages c89
您可以放置一个链接到比较矩阵或主要编译器可用的扩展列表。如果这些都不可用,您可以在您喜欢的编译器中编写您使用或喜欢的扩展列表。
【问题讨论】:
标签: c compiler-construction programming-languages c89
目前为止的 C++/ISO-C 风格的 cmets://
【讨论】:
嗯,这取决于您说“ANSI C”时是指 C89 还是 C99。由于大多数主流实现还不完全符合 C99,我将假设 C89。
在这种情况下,我会说(不包括特定的 API,如 POSIX 或 BSD 套接字):
long long 必须是最常见的扩展名;union 成员,而不是最后写入的成员;inline 可能在上面;snprintf 在很多地方都可以使用;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;
【讨论】: