Когда вы #include
используете заголовок, это точно так же, как если бы вы помещали код в сам исходный файл. В обоих случаях переменная varGlobal
определена в источнике, поэтому она будет работать независимо от того, как она объявлена.
Также, как указано в комментариях, переменные C ++ в области видимости файла не являются статическими по объему, даже если они будут назначены статическому хранилищу. Если бы переменная была, например, членом класса, она должна была бы быть доступной для других модулей компиляции в программе по умолчанию, и элементы, не относящиеся к классу, ничем не отличаются.