programing

휴대용 코드는 long long을 사용해야 합니까, int64_t를 사용해야 합니까?

cafebook 2023. 7. 7. 21:07
반응형

휴대용 코드는 long long을 사용해야 합니까, int64_t를 사용해야 합니까?

저는 C와 C++로 작성된 오픈 소스 코드베이스를 가지고 있습니다.저는 최소 64비트 너비가 보장되는 정수형을 찾고 있습니다. 이 정수형은 일반 사용자의 추가 작업 없이 오픈 소스 C 및 C++ 컴파일러로 대부분의 OS X(Intel, 64비트) 및 Linux 박스에서 안정적으로 컴파일할 수 있습니다.Windows 및 32비트 클라이언트 지원은 현재 중요하지 않습니다.

X에서 는 C모드를 OS X의 것 ).long long 이것지않지만지지다원니원합,하은도▁cl다니▁it▁).,를 지원하지만.long long특정 버전 이후에 C99 모드가 활성화된 경우.

사용할 일반적인 제안입니까?int64_t신에를 long long휴대성이 중요한 목표일 때?형식 지정자를 사용하는 것은 어려운 일인 것 같습니다.

신뢰할 수 있는 캐스팅이 가능합니까?int64_tlong long로 (그리고마찬로지가로그▁the지▁(▁to▁(가)unsigned와동한에 uint64_t을 가져가는 및합니다.long long매개 변수로? (물론 다시 돌아옵니다.)

그런 관점에서, 만약 내가 GCC가 아닌 Clang 기능이 필요한 코드를 발송한다면, Clang은 Linux에서 선택한 컴파일러로 GCC를 대체할 것입니까?그 컴파일러는 최종 사용자에게 소스 코드를 제공할 때 대부분 기대할 수 있는 것입니까?

기본적으로, 저는 휴대용 C와 C++ 코드에 두 가지 유형을 모두 사용한 다른 개발자들에게 조언을 구하고 싶습니다. 그들은 위의 목표를 염두에 두고 더 나은 장기적인 방법을 제안할 수 있습니다.

long long그리고.unsigned long long각각 최소 64비트의 표준 C 및 표준 C++ 유형입니다. 있는 한 경우를 는 이러한 유형을 -pedantic모드 그러나 이 경우int64_t또는uint64_tC++ 2011 이전 컴파일러에서도 사용할 수 없습니다. <stdint.h>사용할 수도 있습니다.즉, 내가 말할 수 있는 한, 당신이 어떻게 철자를 쓰는지는 별로 중요하지 않습니다.의 주요 <stdint.h>특정 비트 수에 가장 적합한 값을 제공하는 것입니다.하지만 이러한 64비트를 int_least64_t또는uint_least64_t부터<stdint.h>또는<cstdint>(후자의 경우 이름은 네임스페이스에 정의됩니다.std).

사용할 일반적인 제안입니까?int64_t대신에long long휴대성이 중요한 목표일 때?

만약 컴파일러가 제공한다면 나는 매우 놀랄 것입니다.int64_t하지만 아닙니다.long long.

한다면long long존재합니다. 최소 64비트를 가져야 합니다. 따라서 캐스팅은(u)int64_t로.(unsigned) long long가치를 보존합니다.

정확하게 64비트를 가진 유형이 필요한 경우(u)int64_t최소한 64비트가 필요하다면,(unsigned) long long완벽하게 괜찮아요, 그럴 것입니다.(u)int_least64_t.

int64_t. int64_t를 사용하면 64비트를 의미하며 어디를 가든 64비트를 얻을 수 있습니다.long은 실제로 긴 만큼 구현에 의존합니다.즉, 긴 길이는 긴 길이 이상이어야 하지만 컴파일러와 플랫폼에 따라 다를 수 있습니다.

언급URL : https://stackoverflow.com/questions/12468281/should-i-use-long-long-or-int64-t-for-portable-code

반응형