Add modules to C with 10 lines of code
Paul Backus
snarwin at gmail.com
Sun Jan 16 14:55:40 UTC 2022
On Sunday, 16 January 2022 at 09:47:00 UTC, Walter Bright wrote:
> https://github.com/dlang/dmd/pull/13539
>
> Yes, real, live modules!
>
> (I can hardly believe this works!)
What's the intended use-case for this? If I'm using ImportC to
import the header file for an existing C library, it's not going
to contain a D-specific feature like this. If I'm writing a new
library, and I want it to be usable from C, I can't use __import
in the header file, because my C compiler won't recognize it. And
if I only want my library to be usable from D, then I can just
write a D module, and use a normal D import statement.
I guess it makes it possible to write code like this:
/* example.h */
#ifdef __IMPORTC__
__import code.stdc.stdio;
#else
#include <stdio.h>
#endif
void example(void) { puts("example"); }
...but I'm struggling to see what advantages an example like the
above has compared to the status quo. Slightly faster compile
times, because __import is faster to process than #include? Less
namespace pollution, because imported symbols aren't visible
outside of the C header but #included symbols are?
More information about the Digitalmars-d
mailing list