为什么typedef不能用于静态?例如,下面的代码是错误
typedef static int INT2;
Run Code Online (Sandbox Code Playgroud)
使用typedef应该遵循哪些其他规则?还有哪些其他关键字不能与typedef一起使用?
非常感谢!
Joh*_*ler 34
typedef不声明变量的实例,它声明了一个类型(实际上是类型别名),
static是应用于实例的限定符,而不是类型,因此在使用类型时可以使用静态,但在定义类型时则不能.像这样..
typedef int int32;
static int32 foo;
Run Code Online (Sandbox Code Playgroud)
wic*_*ich 20
该static关键字是不是类型的一部分,这取决于上下文它是一个存储或范围的说明符,并且具有任何的类型没有影响.因此,它不能用作类型定义的一部分,这就是它在这里无效的原因.
typedef是一个类型定义,即你说'this name'现在引用'this type',你给出的名称必须是语言标准定义的标识符,类型必须是类型说明符,即已命名类型,基本类型或typedef'd,结构,联合,类或枚举说明符,可能的类型限定符,即const或volatile.
然而,static关键字不会更改类型,它会说明对象的内容(通常,不是在OOP意义上).例如,它是放在静态存储中的变量,而不是类型.
看起来你正在尝试使用typedef作为宏,即
#define MYINT static int
Run Code Online (Sandbox Code Playgroud)
typedef不能与 一起使用,static因为 和typedef都是static存储类。如果将变量定义为,typedef static int a;则该变量存在多个存储类a。
存储类用于定义变量和/或函数的范围(可见性)和生命周期。一些例子是static、auto、register、extern等typedef。