Блок-связь области видимости C стандарт

Следующие идентификаторы не имеют связи: идентификатор, объявленный ничем иным, чем объект или функция; идентификатор, объявленный параметром функции; идентификатор блочной области применения для объекта, объявленного без спецификатора класса хранения extern.

{
    static int a; //no linkage
}

Для идентификатора, объявленного с экстерном спецификатора класса хранения в области применения, в которой видна предшествующая декларация этого идентификатора, если в предшествующем объявлении указана внутренняя или внешняя связь, то связь идентификатора в более позднем объявлении является такой же, что и связь, указанная в предшествующем объявлении. Если предшествующее заявление не является видимым или , если в предшествующем заявлении не указана связь , , то идентификатор имеет внешнюю связь .

{
    static int a; //no linkage
    extern int a; //a should get external linkage, no?
}

Ошибка GCC: внешнее объявление следующего объявления без связи

Кто-нибудь может объяснить мне, почему я получил эту ошибку?

Спасибо

6
задан mindless 30 August 2011 в 07:26
поделиться