История изменений
Исправление
Norong,
(текущая версия)
:
У меня возникли ещё вопросы о внешних переменных:
Внешняя переменная должна быть определена ровно один раз за пределами всех функций программы. ... Она также должна быть объявлена в каждой функции, которая к ней обращается, с указанием её типа. Объявление может быть явным, с помощью оператора extern, а может быть и неявным - по контексту.
Какая в контексте этого абзаца разница между определением переменной и её объявлением?
Дальше:
ровно один раз за пределами всех функций программы.
А если у меня несколько файлов исходного кода, и я хочу, чтобы внешняя переменная из одного файла использовалась в других, то я должен как минимум в одном файле исходного кода (любом) объявить переменную без extern вне функций, а в остальных - с extern или без вне функций, и/или с extern внутри тех функций, в которых я хочу её использовать? А могу ли я такую переменную объявить внутри функции без extern, и будет ли разница?
Ты говорил:
Хотя бы одно объявление во множестве файлов должно быть без extern иначе переменная не будет создана нигде.
Правильно ли я понимаю, что без extern происходит либо отведение памяти под переменную, либо обращение к уже существующей, а с extern - только обращение к уже существующей? Если да, то что из этого делает компилятор, а что - компоновщик?
Исходная версия
Norong,
:
У меня возникли ещё вопросы о внешних переменных:
Внешняя переменная должна быть определена ровно один раз за пределами всех функций программы. ... Она также должна быть объявлена в каждой функции, которая к ней обращается, с указанием её типа. Объявление может быть явным, с помощью оператора extern, а может быть и неявным - по контексту.
Какая в контексте этого абзаца разница между определением переменной и её объявлением?
Дальше:
ровно один раз за пределами всех функций программы.
А если у меня несколько файлов исходного кода, и я хочу, чтобы внешняя переменная из одного файла использовалась в других, то я должен как минимум в одном файле исходного кода (любом) объявить переменную без extern вне функций, а в остальных - с extern или без вне функций, и/или с extern внутри тех функций, в которых я хочу её использовать? А есть ли разница, буду ли я такую переменную объявлять с extern или без оного, если объявляю я внутри функции?
Ты говорил:
Хотя бы одно объявление во множестве файлов должно быть без extern иначе переменная не будет создана нигде.
Правильно ли я понимаю, что без extern происходит либо отведение памяти под переменную, либо обращение к уже существующей, а с extern - только обращение к уже существующей? Если да, то что из этого делает компилятор, а что - компоновщик?