Предположим, есть проект на няшке с кучей зависимостей. Перед компиляцией препроцессор проходит по всем инклюдам. В некоторых инклюдах есть другие инклюды, ... В общем, все инклюды вместе с программой превращаются в большой plaintext. В результате - БЕЗУМНОЕ количество имен функций и переменных в global name scope. Неймспейсов, модулей, пакетов, объектов нет.
Почему все эти имена из разных инклюдовне конфликтуют?! Как мне теперь называть функции - полюбому такое название уже есть в глобальном пространстве имен?! Как дальше жить!