2010-08-28 20 views
8

के दौरान संकलक संस्करणों का पता लगाना यह एक प्रश्न और संदर्भ दोनों है और मैं उम्मीद कर रहा हूं कि लोग इस पर निर्माण कर सकें ताकि इसे समान प्रश्न वाले लोगों द्वारा पुन: उपयोग किया जा सके।संकलन समय

हम सी/सी ++/ओबीजेसी कंपाइलर के किसी विशेष संस्करण को विश्वसनीय रूप से कैसे पहचान सकते हैं? अब मुझे विजुअल स्टूडियो का जवाब पता है और आंशिक रूप से एक्सकोड के लिए जवाब पता है।

अब दृश्य स्टूडियो संकलक हम _MSC_VER है जो इन मूल्यों के साथ परिभाषित किया गया है के लिए:

Version 1.0 800 
Version 2.0 900 
Version 2.x 900 
Version 4.0 1000 
Version 5.0 1100 
Version 6.0 1200 
Version 7.0 1300 
Version 7.1 1310 
Version 8.0 1400 (Visual Studio 2005) 
Version 9.0 1500 (Visual Studio 2008) 
Version 10.0 1600 (Visual Studio 2010) 
Version 11.0 1700 (Visual Studio 2012) 
अब Xcode संकलक हम इस को परिभाषित किया है के लिए

:

__APPLE_CC__ 

लेकिन केवल मूल्यों मैं Google के माध्यम से खोजने में कामयाब रहे (मैक डॉक्स में ये मान नहीं लगते हैं) हैं:

Xcode 3.0    5465 
Xcode 3.1    5470 
Xcode 3.1 (GCC 4.2) 5553 
Xcode 3.2.3   5664 (Got this value from my own compiler) 

क्या कोई योन इस सूची को पूरा करें या एक पूर्ण सूची के लिंक प्रदान करें? और शायद हम अन्य कंपाइलरों के लिए भी जानकारी प्रदान कर सकते हैं।

+2

न तो विजुअल स्टूडियो और न ही एक्सकोड कंपाइलर्स हैं - आपको उनके संस्करण की परवाह नहीं करनी चाहिए। – alternative

+3

@mathepic मैं अगले आदमी के रूप में pedantic के रूप में हूँ, लेकिन वास्तव में? वीएस आईडीई के प्रत्येक संशोधन के लिए फ्रंटेंड कंपाइलर्स के एक विशिष्ट संस्करण के साथ आता है, और _MSC_VER के माध्यम से उस संस्करण को उजागर करता है; यही वह है जो वह चाहता है –

+1

मुझे अपने आप को स्पष्ट करने दें। हां वे दोनों आईडीई हैं लेकिन वे दोनों अपने स्वयं के कंपाइलर्स के साथ पैक किए गए हैं, जो मैं बात कर रहा था। मुझे उम्मीद थी कि मेरे संदेश से स्पष्ट था। – Cthutu

उत्तर

1

किसी के रूप में जो 'सी' के आसपास के बारे में उनकी उचित हिस्सा से भी अधिक मोड़ा गया है, मुझे थे कर सकते हैं से आ रहे हैं, तो हमें यहाँ आरंभ करने के लिए कुछ है:

आईबीएम सीएल/C++ कम्पाइलर उत्पाद के लिए:

__xlc__ - Format is V.R.M.F eg: "9.0.0.0" 
__IBMCPP__ Format is an integer as VRM eg: V9.0 is 900 
__IBMC__ - Format is an integer as VRM, 
      which indicates the level of compiler as VRM as: 
< 200 is C Set/2 
< 300 is C Set++ 
otherwise is Visual Age C++ V.M.C 

      where V=version, M=release, M=modification and F=fix level. 

Borland सी के लिए:

___BORLANDC__ ?? 

GNU सी के लिए:

__GNUC__ ?? 

Watcon सी के लिए:

__WATCOMC__ 
+0

क्या आपको पता है कि सी # कंपाइलर्स के बारे में समान जानकारी कैसे प्राप्त करें? सी # के लिए वीएस में _MSC_VER अब उपलब्ध नहीं है। क्या है? –

+0

मुझे माइक्रोसॉफ्ट सी # कंपाइलर में कोई पूर्व-परिभाषा नहीं पता है लेकिन मोनो संकलित में '__MonoCS__' है जो आसान होने के लिए प्रदान किया गया है .. (ओह, आपके पास DEBUG है) –

0

यहाँ इस जानकारी का एक टेबल है:

https://sourceforge.net/p/predef/wiki/Compilers/

दुःख की बात है ऐसा लगता है कि MacOS को परिभाषित करता है __clang__, __GNUCC__ और __llvm__ तो यह जानकारी एक प्राप्त कर सकते हैं थोड़ा उलझन में

लेकिन आमतौर पर, जानकारी का केवल एक सेट लागू होता है।

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