ในการตรวจสอบว่ามีการระบุประเภทจำนวนเต็มความกว้างคงที่คุณสามารถตรวจสอบว่ามีการกำหนดอย่างใดอย่างหนึ่งที่สอดคล้องกัน[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)