Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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++?< /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++中,不存在匿名结构(),尽管主流编译

我猜您打算直接将二进制数据读入这个结构。在现代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我在回答的第一段中提到了这一点