On Wednesday, 12 December 2018 at 09:49:58 UTC, elvisxzhou wrote:
import std.stdio;
struct AA
{
int i;
char c;
double d;
string s;
float f;
}
struct BB
{
float f;
AA[2] a;
}
void print(BB* bb)
{
writefln("bb.a[0].i=%d bb.f=%f", bb.a[0].i, bb.f);
}
void main()
{
//dlang
AA aa = {
i:1010,
f:0.1f
};
BB bb = {
f : 0.2f,
a : [
AA(1010, 0,0,null,0.1f),
AA(1020,0,0,null,0.2f)
]
};
print(&bb);
/************************************************/
/*
//C99
print( &(BB){
.f = 0.2f,
.a = {
[0] = { .i = 1010, .f = 0.1f }
[1] = { .i = 1020, .f = 0.2f }
}
});
*/
}
dlang version has two unnecessary symbols aa and bb, which is
ugly compare to c99 one.
aa is already eliminated in the example, but you know where the
ugly is.