2016-09-12 7 views
6

द्वारा क्लैंग, जीसीसी और टीसीसी को पहचानना मैं clang, gcc, और tcc का उपयोग करता हूं, और मैं एक सामान्य शीर्षलेख में तीनों के बीच अंतर करने में सक्षम होना चाहता हूं।कार्यान्वयन-परिभाषित मैक्रोज़

उनके मैक्रो डंप के आधार पर, मुझे उम्मीद है कि __clang__ मैक्रो की उपस्थिति अनन्य रूप से क्लैंग की पहचान करेगी।

मैं tcc ($compiler -x c -E -dM /dev/null के साथ मैक्रो डंप प्राप्त करने में असमर्थ हूं) इसके मामले में काम नहीं करता है)।

मैक्रो (यदि कोई है) क्या है जो विशिष्ट रूप से जीसीसी (और संभवतः टीसीसी) की पहचान करेगा?

+0

शायद '__GNUC__'? –

+0

जीसीसी के लिए डुप्लिकेट हैं, आपको वास्तव में केवल टीसीसी के बारे में पूछना चाहिए। – 2501

+0

@ केरेकस्क बी क्लैंग '__GNUC__' भी परिभाषित करता है। – PSkocik

उत्तर

7

टीसीसी का पता लगाने के लिए __TINYC__ का उपयोग करें।

जीसीसी और बजना की जांच इस StackOverflow सवाल में समझाया गया है: Detect gcc as opposed to msvc/clang with macro


(से उद्धरित: http://bellard.org/tcc/tcc-doc.html#SEC9)
__TINYC__ संकेत मिलता है कि आप TCC का उपयोग 1 करने के लिए एक पूर्व-निर्धारित मैक्रो है।

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