C++;匿名结构? 我以前的帖子提出了匿名结构的主题,有几个评论者说C++中不允许使用这些内容。 这是一个我经常用到的结构:这是合法的C++?< /p> const int HeaderSize = 8192; struct Header { union { struct { int r; // other members }; unsigned char unused[HeaderSize]; // makes Header struct's size remain constant as members are added to the inner struct }; // Default constructor Header() { } }; C++中,不存在匿名结构(),尽管主流编译器将其作为扩展。
我猜您打算直接将二进制数据读入这个结构。在现代C++中,这是不赞成的,并且最好使用数据序列化。 如果您坚持直接读取结构,那么另一种选择可能是:C++;匿名结构? 我以前的帖子提出了匿名结构的主题,有几个评论者说C++中不允许使用这些内容。 这是一个我经常用到的结构:这是合法的C++?< /p> const int HeaderSize = 8192; struct Header { union { struct { int r; // other members }; unsigned char unused[HeaderSize]; // makes Header struct's size remain constant as members are added to the inner struct }; // Default constructor Header() { } }; C++中,不存在匿名结构(),尽管主流编译器将其作为扩展。,c++,anonymous-struct,C++,Anonymous Struct,我猜您打算直接将二进制数据读入这个结构。在现代C++中,这是不赞成的,并且最好使用数据序列化。 如果您坚持直接读取结构,那么另一种选择可能是: struct Header { int r; // other members; }; struct Image { Header hdr; char padding[HeaderSize - sizeof(Header)]; // rest of image }; C++中,不存在匿名结构(),尽管主流编译
struct Header
{
int r;
// other members;
};
struct Image
{
Header hdr;
char padding[HeaderSize - sizeof(Header)];
// rest of image
};
<标准> C++中,不存在匿名结构(),尽管主流编译器将其作为扩展。 我猜您打算直接将二进制数据读入这个结构。在现代C++中,这是不赞成的,并且最好使用数据序列化。 如果您坚持直接读取结构,那么另一种选择可能是:
struct Header
{
int r;
// other members;
};
struct Image
{
Header hdr;
char padding[HeaderSize - sizeof(Header)];
// rest of image
};
匿名结构不是C++中的一个东西,而只是匿名的联合。因此,您必须为结构提供一个名称
此外,匿名联合也不能有嵌套类型,这意味着您也必须将结构从联合中取出 因此,结合这两个位,这意味着您需要写入:const int HeaderSize = 8192;
struct Header
{
struct Members
{
int r;
// other members
};
union
{
Members members;
unsigned char unused[HeaderSize]; // makes Header struct's size remain constant as members are added to the inner struct
};
// Default constructor
Header()
{
}
};
匿名结构不是C++中的一个东西,而只是匿名的联合。因此,您必须为结构提供一个名称
此外,匿名联合也不能有嵌套类型,这意味着您也必须将结构从联合中取出 因此,结合这两个位,这意味着您需要写入:const int HeaderSize = 8192;
struct Header
{
struct Members
{
int r;
// other members
};
union
{
Members members;
unsigned char unused[HeaderSize]; // makes Header struct's size remain constant as members are added to the inner struct
};
// Default constructor
Header()
{
}
};
数据序列化很笨拙,我不知道它将如何处理二进制数据。你提出的解决方案会有同样的效果,我看不出它的优势。“伍迪20我的建议比你的优势在于它是有效的代码,你的答案是,我所展示的结构是无效的C++。然而,它确实与我的编译器(VS 2019)一起工作。@Woody20我在回答的第一段中提到,数据序列化很笨拙,我不知道它将如何处理二进制数据。你提出的解决方案会有同样的效果,我看不出它的优势。“伍迪20我的建议比你的优势在于它是有效的代码,你的答案是,我所展示的结构是无效的C++。然而,它确实与我的编译器(VS2019)配合使用。@Woody20我在回答的第一段中提到了这一点