2014-12-13 7 views
4

sizeof 키워드를 사용하여 size_t (예 : cstddef 또는 stddef.h)의 정의와 함께 헤더 파일을 포함시켜야합니까? 예를 들어sizeof 연산자에 의해 반환 된 size_t에 대한 헤더 파일을 포함합니다.

: 당신은 명시 적으로 (선언 또는 정의에 즉) 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'을 사용합니다. 그렇지 않다면 아니오. –

+0

해야합니다. 불쌍하게도, 어떤 머리글인지 모르겠다. 또한 이것은 std :: size_t for C++입니다. –

+1

http://en.cppreference.com/w/cpp/types/size_t에 따르면이 헤더는 여러 헤더에 정의되어 있습니다. –

답변

1

cstddef 또는 stddef.h을 포함해야합니다. 원하는 모든 작업을 수행하려는 경우 sizeof을 사용하여 특정 유형의 크기를 결정할 필요는 없습니다. 예를 들어 다음 문에서는 형식의 크기를 결정할 때 sizeof을 사용하기 위해 헤더 파일을 포함 할 필요가 없습니다.

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

당신이 정보를 위해 특별히 찾는 경우 약 sizeof 당신이 자세한 내용은 C++ 표준의 5.3.3 ([expr.sizeof])를 살펴 보시기 바랍니다. 어떤 이유로 당신이 헤더를 포함하지 않으려면

2

, 당신은 C가 올바른 유형을 추론 ++하도록 할 수 있습니다 :

decltype(sizeof(0)) n; 
+0

좋은 헤더 - 전혀 헤더가 없다 -하지만 못생긴다. –

+0

'size_t = decltype (sizeof (0));'을 한 번 쓰고, 보통 'size_t'를 사용할 수있다. – Andrew