Не могат да се използват заедно външни и статични спецификатори на клас за съхранение

В C99 6.7.1 се казва

Най-много един спецификатор на клас за съхранение може да бъде даден в спецификаторите на декларацията в декларация

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

Защо не можем да използваме extern и static заедно? Има ли основателна причина, освен че стандартът просто казва, не?


person Community    schedule 13.10.2011    source източник
comment
Вашият въпрос има повече смисъл, ако за мен са се замени с за мен не са. Това ли имахте предвид?   -  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

„Статичен“ извън всички блокове означава „вътрешна връзка“, „външен“ означава външна връзка. Какво трябва да означава статичен extern? Вътрешна външна връзка???

person Jens    schedule 13.10.2011
comment
Писалка ананас ябълка химикалка - person Meet Taraviya; 29.08.2017