왜 그렇게 많은 라이브러리를 정의 자신의 고정 된 폭 정수가?

0

질문

기 때문에 적어도 C++11 우리는 사랑스러운 고정 폭 정수에서 예를 들어 C++'s <cstdint> 또 C <stdint.h> 자(예를 들어 std::uint32_t, std::int8_t다),그래서 함께 또는없이 std:: 그들 앞에서도 매크로로에 대한 최소 너비(INT16_C, UINT32_C 그래서).

아직 우리가 할격으로 라이브러리와 모든 하루를 정의하는 자신의 고정 된 폭 정수해야 할 수 있습니다 예를 들어 볼 sf::Int32, quint32, boost::uint32_t, Ogre::uint32, ImS32,...내가 갈 수 있는 경우에 당신은 나를 원한다. 당신은 너무 알고있는 몇 가지 더 아마.

때로는 이러한 형식 정의(또한 종종 매크로 정의)이끌어 낼 수 있습 충돌을 예고 싶을 때 전달 std 고정 된 폭 정수 함수 라이브러리에서 기대하는 고정 폭의 정수와 정확히 동일한 폭하지만,다르게 정의된다.

의 포인트 고정 폭의 정수입니다 그들에게는 고정 크기는 우리에게 필요한 많은 상황에서 위험에 처했다고 합니다. 왜 이러한 모든 라이브러리에 대해 이동하고 typedef 를 정확히 같은 정수 우리는 이미에서는 C++표준? 그 추가 정의하는 때로는 혼란,중복을 침입할 수 있습의 codebase 는 아주 나쁜 것들입니다. 과하지 않는 경우가 너비 및 부호의 유무 그 약속가,그들은 적어도 죄에 대하여 이 원칙의 적어도 놀랍게도,그래서 무엇이 그들의점 본인은 당신을 요구하는가?

c++ fixed-width integer
2021-11-23 14:45:24
1

최고의 응답

5

왜 그렇게 많은 라이브러리를 정의 자신의 고정 된 폭 정수가?

아마 일부에 대해서는 아래의 이유로:

  • 그들은 전에 시작된 C++11C11(예: GTK, Qt,도서관 내부를 GCC, 향상, 이러한 작업을 처리, GTKmm, Jsoncpp, Eigen, Dlib, OpenCV, Wt)

  • 그들이 원하는 읽기 코드,내 자신 namespaceclass (데이 자신의 네임스페이스로 다음과 같 Qt 가 수있다,가독성을 개선의 잘 작성된 코드).

  • 그들은 구간 구성(예: GNU autoconf).

  • 그들이 원하는 것을 컴파일할 수 있는 오래된 C++컴파일러(예를 들어 일부는 C++03one)

  • 그들이 원하는 크로스 컴파일할 수 있 게 저렴한 임베디드 마이크로컨트롤러 의 컴파일러가지 C++11 컴파일러입니다.

  • 그들은 일반적인 코드(나 template-s,예를 들어에서 고유 또는 Dlib)을 아마도 지원이 임의로 정밀 연산 (나도록 설정을 변경하고 싶을지도 모릅)아마도를 사용하여 GMPlib.

  • 그들이 원하는 어떻게 든 증명할 수 있으로 Frama-C 거나 할-178C 인증(임베디드 소프트웨어 시스템)

  • 그들이 프로세서(예를 들어 asmjit 를 생성하는 기계 코드를 런타임 시에 몇몇 아키텍처)

  • 그들은 인터페이스의 특정 하드웨어나 프로그래밍 언어(Tensorflow, OpenCL, Cuda).

  • 그들이 원하는 것을 사용할 수 있 는 파이썬 또는 GNU guile.

  • 그들은 운영-시스템은 특정합니다.

  • 그들은 추가 런타임 검사,예를 들어,대 0 으로 나누기(또는 정의되지 않은 다른 동작)이나 오버플로(C++표준을 요구할 수 없습,성능이나 역사적인 이유로)

  • 그들도 쉽게 사용할 수 있 는 기계로 생성된 C++코드(예: RefPerSys, ANTLR,...)

  • 그들은 수 있도록 설계되어 있습니다 호출 가능 C 에서 코드(예: libgccjit).

  • 등...을 찾는 다른 좋은 이유가 왼쪽으로 운동을 리더입니다.

2021-11-24 08:35:11

괜찮습니다. 멈추도록 하겠습니다 내 눈을 압연을 볼 때마다 하나입니다.
nada

저는 그래서 많은 코드를 일치하는 첫 번째 포인트는지 재미 있습니다.
user4581301

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................