Anything like C99 compound literals in D?
Seb
seb at wilzba.ch
Fri Feb 9 12:30:31 UTC 2018
On Friday, 9 February 2018 at 12:14:52 UTC, John Burton wrote:
> This is just an example...
>
> In windows WNDCLASS is a struct and RegisterClass is a function
> that takes a pointer to an instance of that class.
>
> In C99 I can use "compound literals" to write this and have it
> construct an instance of that struct on the stack, set the
> values I've initialized, and default the rest of the struct
> members to zero. (There are many other members I just want to
> set to zero)
>
> RegisterClass(&(WNDCLASS) {
> .hInstance = GetModuleHandle(NULL),
> .lpszClassName = "Hello",
> .lpfnWndProc = DefWindowProc
> });
>
> I find this very handy in my own code too. The syntax is very
> nice.
> Is there any similar feature in D? (or a clean way to do this
> kind of thing)
Selective struct initialization works in D:
MyStruct s = {
a: "aa",
b: 1,
}
Though not in-place, but there's already a DIP in the queue:
https://github.com/dlang/DIPs/pull/71
We just need to get the DIP in its final shape (and maybe
super-charge it with an actual DMD PR).
More information about the Digitalmars-d
mailing list