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