Like C++ STL but with macros and C