4 ms·
I once started experimenting with (GNU) C macros: https://gist.github.com/machuidel/d7cc099ddc4970c6ddf4 https://gist.github.com/machuidel/d7cc099ddc4970c6ddf4
by komerdoor 9y ago
I once started experimenting with (GNU) C macros:
https://gist.github.com/machuidel/d7cc099ddc4970c6ddf4 https://gist.github.com/machuidel/d7cc099ddc4970c6ddf4
It became an abomination consisting out of many C-preprocessor hacks and impossible to debug. I never put it online (and I never will).
In the end if you want to use C at a more abstract level you may as well use Nim (not C, but it compiles to C89), C++ (of course) or write your own code generator (using libclang with annotations for ex.).
- deleted 9y ago[deleted]
- bachmeier 9y agoOr mix in a Scheme that compiles to C, like Gambit, Chicken, or Bigloo. You can leave the low level and performance sensitive stuff in C.
- FrozenVoid 9y agoD mixin templates/mixins are another alternative: You can include arbitrary strings from functions running at compile time. Theoretically they're more powerful than C macros, but type safety(template parameters) makes some constructs awkward - unless you create and parse strings as tokens manually(basically reading/writing many strings to achieve what C preprocessor does with symbolic token composition). https://dlang.org/mixin.html https://dlang.org/mixin.html https://dlang.org/spec/template-mixin.html https://dlang.org/spec/template-mixin.html Templates can also include mixins: template liter(String s){mixin(s);}