静态存储类说明符
静态存储类说明符 static 和 extern 可应用于对象和函数。 下表显示了可使用关键字 static 和 extern 的位置以及不能使用二者的位置。
static 和 extern 的使用
构造 |
是否可使用 static ? |
是否可使用 extern ? |
---|---|---|
块内的函数声明 |
否 |
是 |
函数的形参 |
否 |
否 |
块中的对象 |
是 |
是 |
块外的对象 |
是 |
是 |
函数 |
是 |
是 |
类成员函数 |
是 |
否 |
类成员数据 |
是 |
否 |
typedef 名称 |
否 |
否 |
使用 static 关键字指定的名称具有内部链接,以及拥有外部链接的类的静态成员。 也就是说,它在当前翻译单元的外部是不可见的。 使用 extern 关键字指定的名称拥有外部链接,除非先前定义为拥有内部链接。 有关名称可见性的详细信息,请参阅范围以及程序和链接。
备注
声明为“内联”且不是类成员函数的函数将获得与声明为“静态”的函数相同的链接特性。
编译器尚未遇到其声明的类名称可用于 extern 声明中。 在遇到此类声明之前,无法使用通过此声明引入的名称。