2014-12-13 65 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