मेरी कोड के कुछ हिस्सों में एक पूर्वप्रक्रमक प्रतीक के मूल्य पर निर्भर करते हैं:वहाँ सी में एक पूर्वप्रक्रमक प्रतीक मान का प्रकार की जाँच करने के तरीका है/C++
int a()
{
#if SDK_VERSION >= 3
return 1;
#else
return 2;
#endif
}
तुलना SDK_VERSION के मूल्य का निर्भर करता है। यह एक पूर्णांक या कुछ ऐसा होने की उम्मीद है जो इस मामले में, पूर्णांक से तुलना करता है। 3. यदि SDK_VERSION ऐसा कुछ है जिसे पूर्णांक से तुलना नहीं किया जा सकता है, तो संकलन त्रुटि होगी।
यदि SDK_VERSION अपेक्षित प्रकार का नहीं है तो संकलन को रद्द करने का कोई तरीका है? उदाहरण के लिए:
#if type(SDK_VERSION) != int # Does not compile, I know
#error "SDK_VERSION must be an integer."
#endif
त्रुटि संदेश थोड़ा और अस्पष्ट होगा, लेकिन 'एसडीके' सहित शीर्षलेख में 'int ___SDK_VERSION_SHOULD_BE_CONVERTIBLE_TO_INT___ = SDK_VERSION;' जैसे कुछ डालने से आपकी समस्या हल हो सकती है। –
आप कहते हैं कि यदि आप 'SDK_VERSION' गलत प्रकार का है, तो क्या आप पहले से संकलन त्रुटि प्राप्त करते हैं, क्या आप एक अच्छा/अलग त्रुटि संदेश चाहते हैं? – spatz
@ FrédéricHamidi: अपने पहचानकर्ताओं में डबल अंडरस्कोर से जुड़ी समस्याओं को अनदेखा करना। –