संकलक विशिष्ट कोड के लिए, यह इस तरह के रूप सीपीपी निर्देशों दिखाई देना सामान्य है:सी पूर्वप्रक्रमक मैक्रो परिभाषा बनाम मूल्य पोर्टेबिलिटी और अभ्यास
#if defined (__GNUC__) && (__GNUC__ >= 4)
जो पूर्वप्रक्रमक परीक्षण मैं आमतौर पर उपयोग है - नहीं के लिए विशेष रूप __GNUC__
, लेकिन यह एक आम उदाहरण है। वैकल्पिक रूप से,
#if (__GNUC__ >= 4)
एक ही आवश्यकताओं को पूरा करना प्रतीत होता है। क्या उत्तरार्द्ध के साथ संभावित समस्याएं हैं? न केवल जीसीसी के साथ, बल्कि किसी मानक-अनुरूप प्रीप्रोसेसर। क्या एलएचएस का मूल्यांकन एक निश्चित मूल्य के रूप में किया जा सकता है, भले ही इसे परिभाषित न किया जाए? क्या दूसरे दृष्टिकोण के लिए कोई समस्या है कि किसी भी भाषा वकील के बारे में पता है?
बिल्कुल सहमत हैं कि पहली पसंद बेहतर है क्योंकि इससे इरादा अधिक स्पष्ट हो जाता है, और कुछ भी लागत नहीं होती है। यह संभावित रूप से गलत 'फॉल-थ्रू' से भी बचाता है जहां एकाधिक कंपाइलर/प्लेटफार्म मामलों का मूल्यांकन किया जाता है। –