ทำไมหลายบรรณารักษ์นิยามของตัวเองซ่อมความกว้าง integers?

0

คำถาม

ตั้งแต่อย่างน้อย C++11 เราเจอที่น่ารักความกว้างคงที่ integers ตัวอย่างเช่นใน C++'s <cstdint> หรืออยู่ใน C น <stdint.h> ออกมาจากกล่อง(ตัวอย่างเช่น std::uint32_t, std::int8_t)ดังนั้นกับหรือไม่มี std:: ในด้านหน้าของพวกเขาและแม้ตอนที่เพิ่มมาสก์สำหรับน้อยที่สุด widths(INT16_C, UINT32_C และดังนั้นบน).

ถึงยังไงพวกเราต้องทำข้อตกลงกับไลบรารีนทุกวันที่กำหนดของตัวเองซ่อมความกว้าง integers และคุณอาจจะเห็นตัวอย่างเช่น sf::Int32, quint32, boost::uint32_t, Ogre::uint32, ImS32ผมสามารถไปและถ้าคุณต้องการให้ฉันไป คุณเหมือนกันรู้จักอีกสองสามอาจจะนะ

บางครั้งพวกนี้ typedefs(ยังบ่อยมาโครงความหมายของคำ)อาจจะนำไปสู่ขัดแย้งสำหรับตัวอย่างเช่นตอนที่คุณอยากจะเป็นขอผ่าน std ความกว้างคงที่จำนวนเต็มที่ฟังก์ชันอกจากห้องสมุดกำลังรอการความกว้างคงที่จำนวนเต็มกับเหมือนกันความกว้างแต่ถูกกำหนดรายที่สองในแอทแลนติกซิตี้

ประเด็นของตัวอักษรกว้างคงที่ integers คือพวกเขากำลังซ่อมขนาดซึ่งเป็นสิ่งที่เราต้องการในหลายสถานการณ์อย่างที่คุณรู้ แล้วทำไมทุกไลบรารีแบบใช้ร่อนไปเรื่องและ typedef เหมือนกัน integers พวกเราต้องอยู่ใน C++มาตรฐาน? พวกนั้นพิเศษกำหนเป็นบางครั้งสับสนหน่อยหรอกและอาจจะบุกรุกของคุณ codebase ซึ่งเป็นสิ่งเลวร้ายหลายอย่าง และถ้าพวกเขาไม่มีความกว้างและ signedness พวกเขาสัญญาว่าจะมีพวกเขาอย่างน้อยทำบาปต่อต้านทฤษฎีขออย่างน้อย astonishment ดังนั้นพวกเขาเป็นประเด็นฉันขอถามคุณ?

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

คำตอบที่ดีที่สุด

5

ทำไมหลายบรรณารักษ์นิยามของตัวเองซ่อมความกว้าง integers?

อาจจะสำหรับบางเหตุผลด้านล่างนี้:

  • พวกเขาเริ่มก่อน C++11 หรือ C11(ตัวอย่าง: GTK, Qt,ไลบรารีแบบใช้ร่งภายในจะ GCC, เพิ่ม, FLTK, GTKmm, Jsoncpp, Eigen, Dlib, OpenCV, Wt)

  • พวกเขาต้องการจะสามารถอ่านรหัสภายในของตัวเอง namespace หรือ class (จะมีของตัวเองห้วงชื่อเหมือน Qt ทำอาจจะปรับปรุง readability ของั้นเขียนรหัส).

  • พวกเขาคือสร้างเวลา configurable(e.g. กับ GNU autoconf).

  • พวกเขาต้องการที่จะเป็น compilable กับเก่า C++compilers(e.g. บางอย่า C++03 หนึ่ง)

  • พวกเขาต้องการที่จะเป็น แข่ง compilable ต้องถูกฝังอ microcontrollers ของใครคอมไพเลอร์ยังไม่เต็ม C++11 คอมไพเลอร์.

  • พวกเขาอาจจะต้องทั่วไปรหัส(หรือ template-s,e.g. ใน Eigen หรือ Dlib)จะอาจจะสนับสนุน เผด็จการซะหน่อ-ความแม่นยำรวมอัตโนมัติ (หรือ bignums)บางทีอาจจะใช้ GMPlib.

  • พวกเขาต้องการที่จะเป็นยังไง provable กับ Frama-C หรือ ทำอะ 178C ณ์(สำหรับฝังวิกฤติโปรแกรมระบบ)

  • พวกเขาเป็นหน่วยประมวลผล name เฉพาะ(e.g. asmjit ซึ่งสร้างเครื่องรหัสที่ runtime ใน ไม่กี่ architectures)

  • พวกเขาอาจจะเชื่อมต่อต้องเจาะจงของฮาร์ดแวร์หรือตั้งโปรแกรมภาษา(Tensorflow, OpenCL, Cuda).

  • พวกเขาต้องการที่จะเป็นภัยจาก เป็นภาษาไพธอน หรือ GNU guile.

  • พวกมันอาจจะปฏิบัติการ-ของระบบเฉพาะเจาะจงทีเดียว

  • พวกเขาเพิ่มเพิ่มเติม runtime เช็ค,e.g. กับดิวิชั่นโดย 0(หรืออื่นๆพฤติกรรมทำดัชนีเทียบสี)หรือเอ่อล้นออกมา(ที่ C++มาตรฐานไม่ได้ต้องการสำหรับการแสดงหรือทางประวัติศาสตร์ด้วยเหตุผล)

  • พวกเขาได้ตั้งใจจะเป็น อย่างง่ายดาย ใช้ได้จาก เครื่องสร้าง ภาษา C++language รหัส(e.g. RefPerSys, ANTLR,...)

  • พวกเขาถูกออกแบบมาให้ callable จาก C รหัส(e.g. libgccjit).

  • etc...เจอกันดีด้วยเหตุผลก็คือทิ้งเป็นข้อกกำลังจะอ่าน.

2021-11-24 08:35:11

โอเคคุณชนะ ฉันจะหยุดถ่ายตาของฉันทุกครั้งที่ฉันเห็นหนึ่ง
nada

ฉันมีเรื่องรหัสที่ตรงกันกระสุนลูกแรกประเด็นมันไม่ตลกเลยนะ
user4581301

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่