int128_t는 왜 없는가?
다수의 컴파일러가 128비트 정수 유형을 제공하지만, 내가 사용한 컴파일러 중 어느 것도 타이핑된 정수 유형을 제공하지 않는다.int128_t
.왜?
내가 기억하는 한, 표준은
- 예비군
int128_t
이런 목적으로, 이것 때문에 - 이러한 유형을 제공하는 구현을 장려하여 typef를 제공
- 이러한 구현을 통해 다음과 같은 기능을 제공하도록 의무화
intmax_t
최소 128비트의
(그리고, 나는 내가 실제로 마지막 포인트에 부합하는 구현을 사용했다고 생각하지 않는다)
나는 C 표준을 참고할 것이다; 나는 C++ 표준이 다음에 대한 규칙을 계승한다고 생각한다.<stdint.h>
/<cstdint>
C로부터
나는 gcc가 128비트 서명되지 않은 정수를 그 이름과 함께 구현한다는 것을 알고 있다.__int128
그리고unsigned __int128
(__int128
일부 플랫폼에서 구현 정의 키워드)를 참조하십시오.
표준 128비트 유형을 제공하는 구현의 경우에도 표준은 필요하지 않다. int128_t
또는uint128_t
규정되어 있다C 표준의 N1570 초안 제7.20.1.1절을 인용한다.
이러한 유형은 선택 사항이다.그러나, 구현이 두 개의 보완적 표현을 가진 8, 16, 32 또는 64비트의 너비, 패딩 비트 및 (서명된 유형의 경우)의 정수 유형을 제공하는 경우, 해당 형식 정의 이름을 정의해야 한다.
C는 구현 정의 키워드인 정의된 확장 정수 유형에 대한 구현을 허용한다.gcc의__int128
그리고unsigned __int128
표준에 의해 정의된 확장 정수 유형과 매우 유사하지만, gcc는 그것들을 그런 식으로 다루지 않는다.대신에, 그것은 그들을 언어의 확장으로 취급한다.
특히 다음과 같은 경우__int128
그리고unsigned __int128
확장된 정수 유형이었다. 그러면 gcc가 정의해야 한다.intmax_t
그리고uintmax_t
그러한 유형(또는 어떤 유형에서는 최소 128비트 폭)으로 한다.그것은 그렇게 하지 않는다; 대신에,intmax_t
그리고uintmax_t
64비트밖에 되지 않는다.
내 생각에 이것은 유감스럽지만, 나는 그것이 gcc를 부적합하게 만든다고 생각하지 않는다.어떤 휴대용 프로그램도 의 존재에 의존할 수 없다.__int128
, 또는 64비트보다 큰 정수를 입력하십시오.그리고 변화하고intmax_t
그리고uintmax_t
심각한 ABI 호환성 문제를 일으킬 수 있음.
참조URL: https://stackoverflow.com/questions/29638723/why-isnt-there-int128-t
'Programing' 카테고리의 다른 글
Vue js 2 - 하위 구성 요소에서 App.vue의 데이터 액세스 (0) | 2022.04.25 |
---|---|
Maven: 아티팩트 설명자를 읽지 못함 (0) | 2022.04.24 |
Ve-Validate 및 Vue 멀티셀렉트 사용 문제 (0) | 2022.04.24 |
구성 요소가 불필요한 종속성을 수집하지 못하도록 하는 방법 (0) | 2022.04.24 |
"정적"이나 "외부"가 없는 "인라인"이 C99에서 유용할 수 있는가? (0) | 2022.04.24 |