Thread overview
ImportC has improved macro support
Dec 06
user1234
Dec 06
Dave P.
Dec 08
Ki Rill
December 06
Macros with the pattern:

    #define BOO ( expression )

are now translated to:

    auto BOO()() { return expression; }

and are available for importing!
December 06
On 12/6/2023 11:59 AM, Walter Bright wrote:
> Macros with the pattern:
> 
>      #define BOO ( expression )
> 
> are now translated to:
> 
>      auto BOO()() { return expression; }
> 
> and are available for importing!

The interesting thing here is `expression` does not need to be translated to D. It's still a C expression, and has C semantics. D templates with C semantics just falls out of the way ImportC was implemented.
December 06

On Wednesday, 6 December 2023 at 20:26:38 UTC, Walter Bright wrote:

>

The interesting thing here is expression does not need to be translated to D. It's still a C expression, and has C semantics. D templates with C semantics just falls out of the way ImportC was implemented.

Indeed, I've seen that the other day, the PR only modifies the parser.

December 06
On Wednesday, 6 December 2023 at 19:59:54 UTC, Walter Bright wrote:
> Macros with the pattern:
>
>     #define BOO ( expression )
>
> are now translated to:
>
>     auto BOO()() { return expression; }
>
> and are available for importing!

Does this work for function-like macros?
December 07
On 12/6/2023 12:43 PM, Dave P. wrote:
> Does this work for function-like macros?

Not yet. It just lays the groundwork for that.
December 08

On Wednesday, 6 December 2023 at 19:59:54 UTC, Walter Bright wrote:

>

Macros with the pattern:

#define BOO ( expression )

are now translated to:

auto BOO()() { return expression; }

and are available for importing!

This is amazing! It should solve the disappearing of enum-like definitions in code. I encountered this in Raylib. It has colors defined as macros:

#define WHITE (Color){255, 255, 255, 255}

I preprocessed the file and all color definitions were gone. I had to redefine them manually.

Nuklear does the same too for their Flags.

December 08
On 12/7/2023 9:17 PM, Ki Rill wrote:
> This is amazing!

All in a day's work!

> It should solve the disappearing of enum-like definitions in code. I encountered this in Raylib. It has colors defined as macros:
> 
> ```c
> #define WHITE (Color){255, 255, 255, 255}
> ```
> 
> I preprocessed the file and all color definitions were gone. I had to redefine them manually.

Give it a try, it should work now!

December 09

On Friday, 8 December 2023 at 05:17:30 UTC, Ki Rill wrote:

>

On Wednesday, 6 December 2023 at 19:59:54 UTC, Walter Bright wrote:

>

Macros with the pattern:

#define BOO ( expression )

are now translated to:

auto BOO()() { return expression; }

and are available for importing!

This is amazing! It should solve the disappearing of enum-like definitions in code. I encountered this in Raylib. It has colors defined as macros:

#define WHITE (Color){255, 255, 255, 255}

I preprocessed the file and all color definitions were gone. I had to redefine them manually.

Nuklear does the same too for their Flags.

Same situation here, with RayLib!
I really really like the way importC is improving, kudos to Walter!

/Paolo