C中这两个声明之间有什么区别:
typedef struct square{
//Some fields
};
Run Code Online (Sandbox Code Playgroud)
和
typedef struct{
//Some fields
} square;
Run Code Online (Sandbox Code Playgroud)
Kei*_*son 10
第一个宣言:
typedef struct square {
// Some fields
};
Run Code Online (Sandbox Code Playgroud)
定义一个名为的类型struct square
.该typedef
关键字是多余的(感谢HolyBlackCat指出了这一点).它相当于:
struct square {
//Some fields
};
Run Code Online (Sandbox Code Playgroud)
(事实上,您可以typedef
在声明中使用关键字而不定义类型名称,这是C语法中的一个小问题.)
第一个声明应该是:
typedef struct square {
// Some fields
} square;
Run Code Online (Sandbox Code Playgroud)
第二个宣言:
typedef struct {
// Some fields
} square;
Run Code Online (Sandbox Code Playgroud)
定义一个匿名struct
类型,然后给它别名square
.
请记住,typedef
它本身并不定义新类型,只定义现有类型的新名称.在这种情况下,typedef
和(匿名)struct
定义恰好合并为一个声明.