IT TIP

size_t 또는 ssize_t를 사용해야합니다.

itqueen 2020. 10. 18. 19:53
반응형

size_t 또는 ssize_t를 사용해야합니다.


이 질문에 이미 답변이 있습니다.

내 코드에서는 int 또는 unsigned int를 사용하지 않습니다. 나는 휴대용을 위해 size_t 또는 ssize_t 만 사용합니다. 예를 들면 :

typedef size_t intc;    // (instead of unsigned int)
typedef ssize_t uintc;  // (instead of int)

,, ... 모두 사용 하기 때문에 strlen, 보통을 사용 합니다. 음수 일 때만 사용 합니다.stringvectorsize_tsize_tssize_t

그러나 나는 그것을 발견했다 :

부호없는 정수 유형은 스토리지를 비트 배열로 취급하는 용도에 이상적입니다. int 대신 unsigned를 사용하여 양의 정수를 나타 내기 위해 1 비트를 더 얻는 것은 거의 좋은 생각이 아닙니다. 부호없는 변수를 선언하여 일부 값이 양수인지 확인하려는 시도는 일반적으로 암시 적 변환 규칙에 의해 무효화됩니다.

The C ++ Programming Language .

그래서 나는 의아해합니다. 내가 잘못? STL이 책의 제안을 따르지 않는 이유는 무엇입니까?


ssize_t반환 값이 유효한 크기이거나 오류를 나타내는 음수 값일 수있는 함수에 사용됩니다. 최소한 범위 [-1, SSIZE_MAX]( SSIZE_MAX시스템에 따라 다름)에 값을 저장할 수 있습니다 .

따라서 size_t바이트 단위로 크기를 반환하려는 경우와 바이트 단위 ssize_t로 크기 또는 (음수) 오류 값을 반환 할 때마다 사용해야합니다.

참조 : http://pubs.opengroup.org/onlinepubs/007908775/xsh/systypes.h.html


ssize_t표준에 포함되어 있지 않으며 휴대용이 아닙니다. size_t객체의 크기를 다룰 때 사용되어야합니다 ( ptrdiff_t포인터 차이에 대해서도 마찬가지입니다).

참고 URL : https://stackoverflow.com/questions/15739490/should-use-size-t-or-ssize-t

반응형