यह निर्धारित करने के लिए कि एक निश्चित-चौड़ाई पूर्णांक प्रकार प्रदान की गई है, तो आप जांच सकते हैं कि क्या संबंधित [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>
, C11 मानक के पैराग्राफ 4 (बोल्ड भागों पर ध्यान दें):
इसमें वर्णित प्रत्येक प्रकार के लिए जो कार्यान्वयन प्रदान करता है, <stdint.h>
उस typedef
नाम को घोषित करेगा और संबंधित मैक्रो को परिभाषित करेगा । इसके विपरीत, यहां वर्णित प्रत्येक प्रकार के लिए जो कार्यान्वयन प्रदान नहीं करता है, <stdint.h>
उस typedef
नाम की घोषणा नहीं करेगा और न ही संबंधित मैक्रो को परिभाषित करेगा ।
C ++ के माध्यम से C कार्यान्वयन विरासत में मिला है <cstdint>
। देखें <cstdint>
बनाम<stdint.h>
कुछ जानकारी के लिए। यह भी देखें कि क्या करें __STDC_LIMIT_MACROS
और क्या करें __STDC_CONSTANT_MACROS
? विवरण के लिए __STDC_LIMIT_MACROS
।
इस प्रकार, यदि int32_t
उपलब्ध है, INT32_MAX
और INT32_MIN
होना चाहिए #define
'डी। इसके विपरीत, यदि int32_t
उपलब्ध नहीं है, तो INT32_MAX
न तो डी INT32_MIN
होने #define
की अनुमति है और न ही ।
नोट करें, जैसा कि @NicolBolas ने एक अन्य उत्तर में कहा है , यह वास्तव में जाँच करने के लिए आवश्यक नहीं हो सकता है।
#if defined(INT8_MIN)