2014-08-28 11 views
7

मैं स्रोत फ़ाइल में, यदि संकलक का उपयोग static_assert का समर्थन करता है, तो मैं पहचानना चाहता हूं।यह पता लगाने के लिए कि कोई कंपाइलर static_assert का समर्थन करता है या नहीं?

+2

आप के लिए '__STDC_VERSION__> = 201100' की जाँच करें या – Christoph

उत्तर

10

सी 11 में, static_assertassert.h मैक्रो है जो _Static_assert तक फैला है।

तुम बस का उपयोग कर सकते हैं:

#include <assert.h> 

#if defined(static_assert) 
// static_assert macro is defined 
#endif 

ध्यान दें कि कुछ compilers (जैसे, IAR) भी एक static_assert कीवर्ड विस्तार भले ही वे C11 का समर्थन नहीं करते है।

के रूप में टिप्पणी में उल्लेख किया है कि आप भी C11 के लिए जाँच कर सकते हैं:

#if (__STDC_VERSION >= 201112L) 
// it is c11, static_assert is defined when assert.h is included 
#endif 
+0

somesuch तो कैसे करता है, तो _Static_assert समर्थित है पता assert.h करता है हो सकता है? – yshui

+2

@yshui, मानक हेडर फाइलों जैसे 'assert.h' प्लेटफ़ॉर्म द्वारा प्रदान की जाती हैं, इसलिए उनके पास आंतरिक आंतरिक जादू है जो यह जानने के लिए है कि क्या समर्थित है या नहीं। यह बिल्कुल मट्ठा है कि वे यहां हैं, इसलिए आपको ऐसी सुविधाओं के बारे में चिंता करने की ज़रूरत नहीं है। –

संबंधित मुद्दे

 संबंधित मुद्दे