[C] extern и связывание
От: DirtyGarry  
Дата: 09.10.14 08:52
Оценка: 5 (1) -2
Уважаемые коллеги, помогите прояснить ситуацию.

Для переменной, объявленной на уровне файла, выражение

extern int i;


«дает» глобальное время жизни, файловую область видимости и непонятно какое связывание (потому что это не определение).

Если связывание непонятно какое, я предположил, что программа

extern int i;

void f(void)
{
    i = i + 5;
}

static int i;


скомпилируется. Но компилятор (gcc) со мной не согласился.

Подскажите, пожалуйста, где я ошибся в своих рассуждениях.

Приведенный пример, видимо, можно исправить только переместив определение переменной i в начало файла.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.