为什么以下是合法的:
typedef struct a aType;
struct a
{
int x;
aType *b;
};
以及以下非法内容:
void main()
{
typedef struct a aType;
aType someVariable;
struct a
{
int x;
aType *b;
};
}
我很好奇,因为在每种情况下它都是前向引用,据我所知,至少对于函数和变量,前向引用是不合法的。
此外,C++ 的答案是否也相同?
最佳答案
您可以创建指向不完整类型的指针,因为指针对象的大小不依赖于所指向类型的大小。指向不同 struct
类型的指针具有相同的大小和表示形式,无论 struct
类型本身的大小如何。
您不能创建不完整类型的实例,因为类型的大小未知。
关于c - 为什么允许指向不完整类型的指针而不是不完整类型的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41751479/