I'm still learning new things about C many months later and It seems that for every big feature that C doesn't support, there is a way to implement it or find another way to do it (that will give you the same result). So my question is the following. How people that are very experienced and create big and complicated software solve these limitations? I'm talking about stuff like Generics/Templates, OOP, RAII and any other big and "modern" feature. One way would be to use a C++ compiler and use only the features that I need but I would like to avoid that as lately I'm very interested on cproc (cproc: Small C11 compiler based on QBE) which use QBE (QBE - Compiler Backend) as a backend (TLTR: 3+ faster compilation time than GCC/Clang and 80% of the performance. These are rough numbers and based on my experience tho) so I would like to avoid using C++. Any ideas and advises?