Предполагая, что это находится в области видимости файла, это «предварительное определение».От 6.9.2 / 2 «Определения внешних объектов»:
Объявление идентификатора для объекта, который имеет область действия файла без инициализатора и без спецификатора класса хранения или с классом храненияСпецификатор статический, составляет предварительное определение.Если модуль перевода содержит одно или несколько предварительных определений для идентификатора, а модуль перевода не содержит внешнего определения для этого идентификатора, то поведение точно такое, как если бы модуль перевода содержал объявление области файла для этого идентификатора с составным типом какконца единицы перевода, с инициализатором, равным 0.
Это означает, что в единице перевода будет также допустимо:
int i = 42;
поскольку это объявление имеет явный инициализатор, это определение переменной i
.
Поскольку объявление находится в области видимости блока, стандарт гласит следующее (6.2.2 / 2 "Связиидентификаторы "):
Каждое объявление идентификатора без связи обозначает уникальный объект.
...
(параграф 6) Следующие идентификаторы не имеют связи: ... идентификатор области блока для объекта, объявленного без спецификатора класса хранения extern.
Таким образом, в области видимости, объявление также будет определением.