मैं जीसीसी के संस्करण के आधार पर एक अलग फ़ाइल शामिल करना चाहता हूं। अधिक सटीक मैं लिखना चाहता हूं:मैं जीसीसी के वर्तमान संस्करण संकलित समय पर परीक्षण कैसे करूं?
#if GCC_VERSION >= 4.2
# include <unordered_map>
# define EXT std
#elif GCC_VERSION >= 4
# include <tr1/unordered_map>
# define EXT std
#else
# include <ext/hash_map>
# define unordered_map __gnu_cxx::hash_map
# define EXT __gnu_cxx
#endif
मुझे 3.2 से पहले जीसीसी की परवाह नहीं है।
नोट: मुझे यकीन है कि इसके लिए प्रीप्रोकैसिंग समय पर एक चर परिभाषित किया गया है, मैं इसे फिर से नहीं ढूंढ सकता।
दुर्भाग्य से इस कोड के साथ विफल रहता है क्लैंग कंपाइलर, जो '__GNUC__' को परिभाषित करता है, लेकिन इसमें 'features.h' शामिल नहीं है। – Gil
ठीक है, यह कोड जीसीसी के संस्करण को जानना है, इसलिए यह आश्चर्य की बात नहीं है कि अगर क्लैंग आंशिक रूप से जीसीसी का प्रतिरूपण करता है तो यह विफल हो जाता है। – PierreBdR
क्षमा करें, ऐसा लगता है कि मैं गलत था। 'Features.h' में बस एक लिनक्स विशिष्ट चीज शामिल है, और किसी भी कोड के लिए भरोसा नहीं किया जाना चाहिए जिसका उद्देश्य अन्य प्लेटफॉर्म पर संकलित करना है। – Gil