我刚刚在阅读有关匿名结构的文章,发现它并不是标准的用法,一些常见的用例也存在未定义行为的问题...
下面是基本用例:
struct Point {
union {
struct {
float x, y;
};
float v[2];
};
};
因此,写入x
,然后从v [0]
读取,在这种情况下是未定义的,因为您期望它们相同,但可能不是这样。
不确定是否在标准中定义了相同类型的联合体...
union{ float a; float b; };
在写入a
并从b
读取时是否未定义?
也就是说,标准是否有关于数组和连续变量的二进制表示的规定。
struct
一个名字,他的问题仍然是一样有价值的。 - James Kanze