But I also think that huge C Projects can turn into a hell easily.
yet. endgame is to make mostly everything constexpr-able. constexpr dynamic_cast, try/catch, and virtuals are coming in C++20 for instance and there are papers to get constexpr memory allocations in C++23.
It would be much easier if undefined behaviour was better defined, because then a compiler could recognize it and diagnose it. Of course then it wouldn't be undefined behaviour any more, so problem solved.