2014-12-13 60 views
4

我应该使用sizeof关键字(它返回该类型)包含带size_t定义的头文件(例如cstddef或stddef.h)吗?包含由sizeof运算符返回的size_t的头文件

例如:

//..no include 

int main() 
{ 
    size_t n; //error: unknown type size_t 
    sizeof(int); //ok, but returned size_t type also undefined 
    return 0; 
} 
+3

如果你想明确地使用'size_t'然后是。如果不是,那么不。 – 2014-12-13 18:10:34

+0

你必须。很不好,我不知道哪个标题。它也是std :: size_t for C++。 – 2014-12-13 18:15:18

+1

根据http://en.cppreference.com/w/cpp/types/size_t它在多个头文件中定义。 – 2014-12-13 18:22:38

回答

1

你只需要包括cstddefstddef.h如果你需要明确地使用size_t(即在声明或定义)。如果您想要这样做,则没有必要使用sizeof来确定特定类型的大小。例如,以下语句不要求包含任何头文件以使用sizeof来确定类型的大小。

int a = sizeof(foo); 
if(sizeof(foo) == 12) {} 

如果你专门为信息寻找有关sizeof我建议你把C++标准的更多信息,看看5.3.3([expr.sizeof])。

2

如果由于某种原因,你不希望有一个头,你可以让C++推断正确的类型:

decltype(sizeof(0)) n; 
+0

一个不错的 - 根本没有头文件 - 但也很难看 – 2014-12-13 20:03:06

+0

你可以使用size_t = decltype(sizeof(0));''一次,然后像平常一样使用'size_t'。 – Andrew 2016-05-11 09:58:46