简体   繁体   中英

How to use anonymous struct or class?

So, it's possible to declalre anonymous class or struct but how to I make it useful?

int main() {
    class{
        int ClassVal;
    };
    struct{
        short StructVal;
    };
    StructVal = 5;   //StructVal is undefined
    ClassVal = 5;    //ClassVal is undefined too?
    return 0;
}

if you put both of them outside of main function they will be inaccessible as well. I'm asking this only because it's somehow intersting :)

EDIT: Why union outside of main function (at global scope) must be static declared for example:

static struct {
    int x;
};
int main() {
   //...
}

Anonymous classes and structures may be used to directly define a variable:

int main()
{
    class
    {
        int ClassVal;
    } classVar;

    struct
    {
        short StructVal;
    } structVar;

    structVar.StructVal = 5;
    classVar.ClassVal = 5;

    return 0;
}

The above is not very common like that, but very common when used in unions as described by Simon Richter in his answer.

These are most useful in the form of nested struct and union :

struct typed_data {
    enum type t;
    union {
        int i;                       // simple value
        struct {
            union {                  // any of these need a length as well
                char *cp;
                unsigned char *ucp;
                wchar_t *wcp;
            };
            unsigned int len;
        };
    };
 };

Now typed_data is declared as a type with the members t , i , cp , ucp , wcp and len , with minimal storage requirements for its intended use.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM