dstep icon indicating copy to clipboard operation
dstep copied to clipboard

Preprocessor macro with variadic args dropped without warning

Open jblachly opened this issue 3 years ago • 3 comments

The following line:

#define sam_hdr_update_hd(h, ...) sam_hdr_update_line((h), "HD", NULL, NULL, __VA_ARGS__, NULL)

Is dropped silently without warning, I believe due to ... variadic arguments, or __VA_ARGS__ symbol.

No need to deal with variadic macros, but a warning is important so it can be added by hand.

Kind regards

jblachly avatar Aug 14 '20 00:08 jblachly

It seems the only problem is the variadic arguments, so hopefully it should be easy to fix.

jacob-carlborg avatar Aug 14 '20 05:08 jacob-carlborg

Off-topic for dstep specifically but when I fixed this by hand it was my first experience with variadic templates in D and I was blown away by compile time sequences.

the fact that I could write

auto sam_hdr_update(T, A...)(T h, A a) {
    sam_hdr_update_line(h, "HD", null, null, a, ull);
}

and it just magically works calling the C variadic fn was really impressive. I even added a static assert to make sure the length of A was an even number at compile time.

jblachly avatar Aug 14 '20 12:08 jblachly

Yeah, it's pretty awesome.

jacob-carlborg avatar Aug 14 '20 13:08 jacob-carlborg