Hi everyone,
This week, I had a long run with issue 20092 working to make compound literals fully work in importC and it has been successfully fixed and merged.
issue: https://github.com/dlang/dmd/issues/20092
The whole idea as discussed with my mentor was to create a temporary variable and then export it with the addressof operator during semantic analysis.
I did a lot of research into the expression semantics to fully understand how the compound literals would fit together. for local pointers, creating a temporary and making sure the variable declaration and the variable expression were exported with the addressof
was enough.
for globals, it needed a little extra tinkering by making sure I push the symbol into the symbol table for the address to be picked up by the pointer.
PR : https://github.com/dlang/dmd/pull/21908#event-19961166923
int *p = &(int){0};
in importC should get you a valid pointer which you can work with and not necessarily creating an object before pointing it as defined by the C standard.