|
|
1
38
正如其他人指出的,在标准C++中允许匿名联盟,但匿名结构不允许。 这样做的原因是C支持匿名联合但不支持匿名结构*,所以C++支持前者兼容但不支持后者,因为它不需要兼容性。
此外,C++中的匿名结构也没有多大用处。您演示的用法是,拥有一个包含三个浮点的结构,可以通过
C++为用户定义的类型提供了可选的解决方案。例如:
*C11显然添加了匿名结构,因此对C++的未来修订可能会添加它们。 |
|
2
17
我会说,你可以清理你的
当然, anonymous structures was an MSVC extension . 但是ISO C11现在允许了,并且 gcc allows it 苹果的LLVM编译器也是如此。 为什么在C11而不是C++ 11?我不确定,但实际上大多数(Gcc++,MSVC++和苹果C++编译器)C++编译器支持它们。 |
|
|
3
7
不知道你的意思。C++规范的第9.5条,第2条:
你也可以这样做:
不总是很有用…尽管有时在讨厌的宏定义中有用。 |
|
|
4
1
工会可以匿名;见标准9.5第2段。 您认为匿名结构或类实现的目的是什么?在猜测为什么标准中没有某个东西之前,我想知道为什么它应该是,并且我看不到匿名结构的用途。 |
|
|
5
1
根据编辑、评论和此msdn文章: Anonymous Structures 我敢猜测——它与封装的概念不太吻合。除了添加一个成员外,我不希望类的成员会干扰我的类命名空间。此外,对匿名结构的更改可能会在未经许可的情况下影响我的类。 |
|
|
6
1
你的代码
就像
这肯定是无效的(在C99和之前)。 原因是 可能 为了简化解析(在C中),因为在这种情况下,您只需要检查结构/联合体是否只有类似于
这就是说, gcc and "other compilers" 支持未命名字段作为扩展名。 编辑: 匿名结构现在在C11中得到了官方支持(_§6.7.2.1/13)。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |