假设我在 C 中定义了一个结构。如果我声明该结构的一个实例,则有必要在它前面包含“struct”关键字。
// Define struct
struct Book {
char title[50];
char author[50];
char subject[100];
int book_id;
};
// Instantiate struct
int main()
{
struct Book myBook;
}
我的问题:为什么 struct 关键字必须在结构的任何实例化之前?编译器似乎有大量信息可以推断“Book”是一个结构。
我知道你可以通过使用 typedef 来解决这个问题,但这真的看起来像是编译器应该已经知道的东西的样板代码。
最佳答案
由于使用关键字 struct、union 和 enum,这些类型的名称可以形成自己的 namespace ,不会与其他实体的名称冲突。
例如
#include <stdio.h>
int main(void)
{
struct Book
{
const char *Book;
} Book = { "The first favorite book" };
struct Book otherBook = { .Book = "The second favorite book" };
puts( Book.Book );
puts( otherBook.Book );
return 0;
}
关于c - 为什么 'struct' 关键字必须在 C 中的结构实例之前?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47555734/