ImportC can now automatically run the preprocessor
    rikki cattermole 
    rikki at cattermole.co.nz
       
    Mon May 16 04:03:22 UTC 2022
    
    
  
```d
void main() {
     import std.stdio;
     writeln("Starting application");
     mixinc(qc{
         #include <stdio.h>
         #include <string.h>
         #include <lua.h>
         #include <lauxlib.h>
         #include <lualib.h>
           char buff[256];
           int error;
           lua_State *L = lua_open();   /* opens Lua */
           luaopen_base(L);             /* opens the basic library */
           luaopen_table(L);            /* opens the table library */
           luaopen_io(L);               /* opens the I/O library */
           luaopen_string(L);           /* opens the string lib. */
           luaopen_math(L);             /* opens the math lib. */
           while (fgets(buff, sizeof(buff), stdin) != NULL) {
             error = luaL_loadbuffer(L, buff, strlen(buff), "line") ||
                     lua_pcall(L, 0, 0, 0);
             if (error) {
               fprintf(stderr, "%s", lua_tostring(L, -1));
               lua_pop(L, 1);  /* pop error message from the stack */
             }
           }
           lua_close(L);
     });
     writeln("Program end");
}
```
Copied the function body from[0].
Now imagine some awful macros that exist. It allows you to bridge C into 
D without creating new or modifying any C files.
This is the ultimate tool for porting C to D.
[0] https://www.lua.org/pil/24.1.html
    
    
More information about the Digitalmars-d
mailing list