Programming

size_t와 std :: size_t의 차이점

procodes 2020. 7. 14. 21:47
반응형

size_t와 std :: size_t의 차이점


의 차이점은 무엇입니까 size_t하고 std::size_t, 때를 사용하고 다른 차별화 기능해야 그들이 선언 된 곳의 측면에서는?


C size_t와 C ++ std::size_t는 모두 동일합니다.

C에서는 C 헤더와 내용이 C 헤더와 동일한 <stddef.h>C ++에 정의되어 있습니다 <cstddef>(아래 인용문 참조). sizeof 연산자 결과부호없는 정수 유형 으로 정의됩니다 .

C 표준은 §17.7 / 2에서 말합니다.

size_t sizeof 연산자 결과부호없는 정수 유형 입니다.

그리고 C ++ Standard는 cstddef§18.1 / 3에서 ( 헤더 에 대해 ) 말합니다 .

내용은 다음과 같이 표준 C 라이브러리 헤더 와 동일합니다 .

예, 둘 다 동일합니다. 유일한 차이점은 C ++ size_tstd네임 스페이스 에서 정의한다는 것 입니다.

또한 위의 행에는 "다음 변경 사항 포함" 이라는 문구가 표시되어 size_t있습니다. 오히려 C ++에서 동일한 헤더에 정의 된 언어 (C에는없는)에 새로 추가 된 내용을 참조합니다.


Wikipedia는 size_t의 범위와 저장 크기에 대한 정보가 매우 좋습니다.

size_t의 범위 및 저장 크기

size_t 실제 유형은 플랫폼에 따라 다릅니다 . 일반적인 실수는 ,이 size_t는 프로그래밍 오류가 발생할 수있는 부호 INT와 같은 가정한다 [3] [4] 예를 들어, 64 비트 아키텍쳐 (32)에서 이동하는 경우.

1999 ISO C 표준 (C99)에 따르면 size_t는 16 비트 이상의 부호없는 정수 유형입니다.

나머지 는 Wikipedia 의이 페이지 에서 읽을 수 있습니다 .


C ++ 03 "17.4.3.1.4 유형"에서 :

표준 C 라이브러리 (각주 169)의 각 유형 T에 대해 :: T 및 std :: T 유형은 구현에 예약되어 있으며 정의 된 경우 :: T는 std :: T와 동일해야합니다.

각주 169 :

이러한 유형은 clock_t, div_t, FILE, fpos_t, lconv, ldiv_t, mbstate_t, ptrdiff_t, sig_atomic_t, size_t, time_t, tm, va_list, wctrans_t, wctype_t 및 wint_t입니다.


std :: size_t 는 실제로 stddef.hsize_t 입니다.

cstddef 는 다음을 제공합니다.

#include <stddef.h>
namespace std 
{
  using ::ptrdiff_t;
  using ::size_t;
}

... 효과적으로 이전 정의를 std 네임 스페이스로 가져옵니다.

참고 URL : https://stackoverflow.com/questions/5813700/difference-between-size-t-and-stdsize-t

반응형