我是否应该包含带有size_t定义的头文件(例如cstddef或stddef.h)以使用sizeof关键字返回该类型?
例如:
//..no include
int main()
{
size_t n; //error: unknown type size_t
sizeof(int); //ok, but returned size_t type also undefined
return 0;
}
答案 0 :(得分:2)
如果由于某种原因你不想包含标题,你可以让C ++推断出正确的类型:
decltype(sizeof(0)) n;
答案 1 :(得分:1)
如果您需要明确使用cstddef
(即在声明或定义中),您只需要包含stddef.h
或size_t
。如果您只想使用sizeof
确定特定类型的大小,则没有必要。例如,以下语句不要求您包含任何头文件以使用sizeof
来确定类型的大小。
int a = sizeof(foo);
if(sizeof(foo) == 12) {}
如果您正在寻找有关sizeof
的信息,我建议您查看C ++标准的5.3.3([expr.sizeof]
)以获取更多信息。