Playing around with different ideas for generics/metaprogramming in C
01_no_metaprogramming | ||
02_macros | ||
03_xmacros | ||
.gitignore | ||
aliases.h | ||
build | ||
compile | ||
helper_macros.h | ||
README.md |
Generics/Metaprogramming in C
Exploring different ideas for implementing generics in C.
01_no_metaprogramming is the result of the code if implemented manually.
02_macros is an implementation that uses simple macros to define 2D and 3D vectors for different data types.
03_xmacros is an implementation that relies on X macros to allow for defining any N-dimensional vector for different data types. In this case, only 2D and 3D vectors were defined (for parity with the previous techniques), but it can be easily expanded to other dimensions.
General assessment of the different techniques
Technique | Readability | Debugging | Maintenance | Extensibility | Score |
---|---|---|---|---|---|
01_no_metaprogramming | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐ | 3.25 / 5 |
02_macros | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | 3.75 / 5 |
03_xmacros | ⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 2.75 / 5 |