Something I don’t think I’ve run into with C before.
It can be so hard to come up with a sensible example. So just ignore whether you think I should be doing this. Assume that something similar made sense in context.
typedef struct Foo {
char uuid[37];
int value;
} Foo;
char main_foo_uuid[sizeof(Foo.uuid)] = "";
//Compile error!
Doing sizeof(Foo) is fine, but sizeof(Foo.uuid) is not.
One solution is do declare a dummy instance of Foo.
Foo dummy; char main_foo_uuid[sizeof(dummy.uuid)] = ""; //Works!
But there’s a trick to avoid declaring the dummy: Cast NULL to a pointer to Foo, and use that as your dummy.
char main_foo_uuid[sizeof(((Foo*)NULL)->uuid)] = ""; //Works!
Which makes you wonder why the language couldn’t just support sizeof(Foo.uuid).
No comments:
Post a Comment