Невозможно использовать вместе спецификаторы extern и static класса хранения.

В C99 6.7.1 говорится

Максимум один спецификатор класса хранения может быть указан в спецификаторах объявления в объявлении.

Я знаю, что extern и static являются спецификаторами класса хранения, но extern в основном указывает компилятору, что переменная объявлена ​​в другом месте, и беспокоиться об этом позже. extern и static для меня НЕ взаимоисключающие. Вполне возможно, что что-то может быть extern и static.

Почему мы не можем использовать extern и static вместе? Есть ли веская причина, кроме того, что стандарт просто говорит «нет»?


person Community    schedule 13.10.2011    source источник
comment
Ваш вопрос имеет больше смысла, если для меня are заменить на мне не являются. Это то, что вы имели в виду?   -  person Pascal Cuoq    schedule 13.10.2011
comment
@PascalCuoq: Да, исправлено. Спасибо   -  person    schedule 13.10.2011


Ответы (2)


Итак, static означает Internal Linkage, extern означает External Linkage.

Internal Linkage относится ко всему только в рамках единицы перевода.

External Linkage относится к вещам, которые существуют за пределами конкретной единицы перевода. Другими словами, доступ через всю программу.

Так что оба являются взаимоисключающими.

person Alok Save    schedule 13.10.2011

«Статический» вне всех блоков означает «внутреннюю связь», «внешний» означает внешнюю связь. Что должен означать статический внешний вид? Внутренняя внешняя связь???

person Jens    schedule 13.10.2011
comment
Ручка ананас яблоко ручка - person Meet Taraviya; 29.08.2017