Если ни ключевое слово extern, ни значения инициализации, может быть либо декларацией или определение. Это зависит от компилятор для анализа модулей программы и решить.
Я не смог полностью понять смысл этого утверждения относительно C. Например, подразумевает ли это, что:
int i;
не обязательно является объявлением (как я предполагал до сих пор), но может также быть определением (по определению определения и декларации на той же веб-странице, каламбур не предназначен)?
Вкратце, это утверждение выше: а. просто объявление или б. Объявление + определение?
Ссылка: Объявление и определение переменных
Резюме полученных ответов:
Declaration Definition Tentative Definition Initialized int i; (inside a block) Yes Yes No No int i=5; (inside a block) Yes Yes No Yes(to 5) int i; (otherwise) Yes No Yes Yes(to 0) extern int i; Yes No No No All definitions are declarations but not vice-versa.