Уважаемые коллеги, помогите прояснить ситуацию.
Для переменной, объявленной на уровне файла, выражение
extern int i;
«дает» глобальное время жизни, файловую область видимости и непонятно какое связывание (потому что это не определение).
Если связывание непонятно какое, я предположил, что программа
extern int i;
void f(void)
{
i = i + 5;
}
static int i;
скомпилируется. Но компилятор (gcc) со мной не согласился.
Подскажите, пожалуйста, где я ошибся в своих рассуждениях.
Приведенный пример, видимо, можно исправить только переместив определение переменной i в начало файла.