Возможный дубликат:
Должен ли С++ исключать файлы заголовков?
В таких языках, как С# и Java, нет необходимости объявлять (например) класс перед его использованием. Если я это правильно понимаю, это потому, что компилятор выполняет два прохода кода. Вначале он просто "собирает доступную информацию", а во втором проверяет правильность кода.
В C и С++ компилятор выполняет только один проход, поэтому в это время все должно быть доступно.
Итак, мой вопрос в основном заключается в том, почему это не делается так на C и С++. Разве это не устранило бы потребности в файлах заголовков?