ในการตรวจสอบว่ามีการระบุประเภทจำนวนเต็มความกว้างคงที่คุณสามารถตรวจสอบว่ามีการกำหนดอย่างใดอย่างหนึ่งที่สอดคล้องกัน[U]INT*_MAX
หรือ[U]INT*_MIN
แมโคร
// may be necessary for your C++ implementation
#define __STDC_LIMIT_MACROS
#include <cstdint>
#ifdef INT32_MAX
// int32_t must be available to get here
int32_t some32bitIntVariable;
#endif
ต่อ7.20 ประเภท<stdint.h>
เลขจำนวนเต็ม , ย่อหน้า 4 ของมาตรฐาน C11 (สังเกตส่วนที่เป็นตัวหนา):
สำหรับแต่ละประเภทอธิบายไว้ในที่นี้การดำเนินการให้<stdint.h>
จะประกาศว่าtypedef
ชื่อและกำหนดมาโครที่เกี่ยวข้อง ตรงกันข้ามสำหรับแต่ละประเภทอธิบายไว้ในที่นี้การดำเนินการไม่ให้<stdint.h>
จะไม่ประกาศว่าtypedef
ชื่อไม่เป็นมันจะกำหนดมาโครที่เกี่ยวข้อง
c ++ <cstdint>
สืบทอดการดำเนินงานที่ผ่าน ดู<cstdint>
vs<stdint.h>
สำหรับรายละเอียดบางอย่าง ดูเพิ่มเติมทำอะไร__STDC_LIMIT_MACROS
และ__STDC_CONSTANT_MACROS
หมายถึงอะไร __STDC_LIMIT_MACROS
สำหรับรายละเอียดเกี่ยวกับ
ดังนั้นหากint32_t
สามารถใช้ได้INT32_MAX
และINT32_MIN
จะต้องเป็น#define
'd ตรงกันข้ามถ้าint32_t
ไม่สามารถใช้ได้ทั้งINT32_MAX
มิได้INT32_MIN
รับอนุญาตให้เป็น#define
'd
โปรดทราบว่าเนื่องจาก @NicolBolas ระบุไว้ในคำตอบอื่นอาจไม่จำเป็นต้องตรวจสอบจริง
#if defined(INT8_MIN)