Я тут посмотрел MSDN, все так отрывочно и не логично написано. Там кусочек там кусочек. Вообщем я попробую всё это обобщить.
Итак, разбираем самый простой пример пустой CPP файл. Белый и пустой как лист бумаги. Что это такое ??? Это область, в которую можно помещать разные элементы. Какие бывают элементы ??? Их всего два типа:
Весь CPP файл это область определения и релизации. То есть здесь мы можем как определять элементы, так и реализовывать их.
Что можно определять и объвлять. Давайте тоже для простоты сократим список и составим главное
Переменные и функции очень похожи вот главные сходства:
Но есть главное отличие. Функции порождают новую подчинёную область реализации и определений, на которую влияет всё более высокие области. Давайте введем функцию main, которая есть в каждой программе.
Как видите из рисунка у нас теперь две области. Одна светло серая область CPP и темнее область main. Область функции main является подчиненной областью к области CPP и поэтому область main имеет доступ ко всему, что находится в области CPP и выше её реализации. Правило такое. Из области реалиции и определения есть доступ ко всему, что находится в более высокой области и Выше её !!!. Выше важно. Проверим ??? Вот код.
int i; void main() { i=5; }
Этот код компилируется без ошибок. Переменная i определена в более старшей области и выше.