What's the syntax to initialise an instance of a structure on the stack?
The obvious doesn't work:
struct Foo { int a; int b; int c; }
Foo foo = { b=2 };
The less obvious is accepted but generates broken code:
Foo foo = { b: 2 };
->
Test _tmp0_ = {0};
Test test;
_tmp0_.a = 2; /* initialises a, not b */
test = _tmp0_;
This *does* work:
Foo foo = new Foo() { b=2 };
...but this turns into:
Test _tmp0_ = {0};
Test _tmp1_ = {0};
Test test;
memset (&_tmp0_, 0, sizeof (Test));
_tmp0_.b = 2;
_tmp1_ = _tmp0_;
test = _tmp1_;
This (argh! two temporaries!) is obviously actually creating an inline
instance of Foo and assigning it to foo, which isn't a structure
initialiser. What's the right way of doing this?
--
┌─── dg@cowlark.com ───── http://www.cowlark.com ─────
│
│ "I have a mind like a steel trap. It's rusty and full of dead mice."
│ --- Anonymous, on rasfc
Attachment:
signature.asc
Description: OpenPGP digital signature