July 11, 2017
On Tuesday, 11 July 2017 at 06:51:33 UTC, Jacob Carlborg wrote:
> On 2017-07-11 03:31, Cym13 wrote:
>
>> Is not getting rid of the macro an option? By that I mean translating the code inside the macro (which can admitedly be hard because it doesn't have to be semanticaly correct code due to concatenations but most macros aren't so evil) and add a pass of cpp to the build.
>
> Not sure I fully understand. Could you give a concrete example? BTW, it might not be possible if the macros are part of the API and we want to keep the D API as close as possible to the C API.
>
>> Of course nobody wants to use the C preprocessor on D code, but it would work and I'd prefer ugly code that works and can be refactored than no working translation at all personnaly.
>
> Are you saying the D code could contain C preprocessor code?

Yeah, the C preprocessor (cpp) is a separate program from the compiler, you can use it independently as you would any template language. It does however prepends some infos that you'd have to strip out.

Example:

$ cat test.d
#define MAX(a, b) (a > b ? a : b)

void main(string[] args) {
    import std.stdio;

    int x = 13;
    int y = 42;

    writefln("The max of %d and %d is %d", x, y, MAX(x, y));
}

$ cpp test.d
# 1 "test.d"
# 1 "<built-in>"
# 1 "<command-line>"
# 31 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 32 "<command-line>" 2
# 1 "test.d"


void main(string[] args) {
    import std.stdio;

    int x = 13;
    int y = 42;

    writefln("The max of %d and %d is %d", x, y, (x > y ? x : y));
}

July 11, 2017
You might enjoy (or rather not):

  - https://stackoverflow.com/questions/3136686/#10526117
  - https://sourceforge.net/projects/chaos-pp/

How generic you intend to make it?
July 11, 2017
On 2017-07-11 20:58, astian wrote:

> How generic you intend to make it?

We'll try to support as much as we can.

-- 
/Jacob Carlborg
1 2
Next ›   Last »