【发布时间】:2013-09-15 00:59:07
【问题描述】:
6.2.5
在翻译单元内的不同点,对象类型可能是 不完整(缺乏足够的信息来确定 该类型的对象)。
还有
6.2.5 19) void 类型包含一组空值;它是一个不完整的对象类型,无法完成。
和
6.5.3.4 sizeof 运算符不得应用于具有函数类型或不完整类型的表达式,
但 Visual Studio 2010 打印 0 为
printf("Size of void is %d\n",sizeof(void));
我的问题是'什么是incomplete types'?
struct temp
{
int i;
char ch;
int j;
};
temp 在这里不完整吗?如果是,为什么它不完整(我们知道 temp 的大小)?不清楚incomplete types。任何解释这一点的代码 sn-p 都会有所帮助。
【问题讨论】:
-
因为 Visual Studio 使用 VC++。尝试使用 g++ 进行相同的编译。您将收到这样的警告:“main.cpp:7:36: 警告:'sizeof' 无效应用到 void 类型 [-Wpointer-arith]”
-
您的
struct temp不是不完整的类型。这是不完整的类型:struct temp; -
除 c++ 标签本身之外的所有内容(标题、标准摘录、代码使用)都表明这是一个 C 问题,所以我删除了 C++ 标签。
标签: c visual-studio-2010 types