On Thursday, 20 July 2017 at 21:17:45 UTC, Walter Bright wrote:
Some time ago, I wrote about the X Macro in C:

  https://digitalmars.com/articles/b51.html

I used it from time to time in C code. It's one of the things I actually like about the C preprocessor. But in translating the aged C code to D it was time to make X work in D. Here's the C code, followed by the D translation.

In C there's no point in the X macro anymore since C99.
Designated initializer allow to do it properly[1] now.

    enum COLORS { red, blue, green, max };
char *cstring[max] = {[red]="red", [blue]="blue", [green]="green" }; /* C99 */

It works also with array indexes[2].

int a[3] = { [2]=1, [0]=3, [1]=2 }; /* C99 designated initializer */ int a[3] = { [2]=1, [0]=3, 2 }; /* C99 designated initializer */

C++ hasn't yet integrated.


[1]: https://dlang.org/ctod.html#arrayenum
[2]: https://dlang.org/ctod.html#arrayinit2

Reply via email to