दिलचस्प पोस्ट
तालिका दृश्य में स्थिर और प्रोटोटाइप सामग्री को गठजोड़ करें काम कर रहे regex के साथ PHP preg_match Iframes में क्रॉस-डोमेन समस्या को समझना केवल एक कॉलम के लिए अलग करें क्रोम में "सामान्य पुनः लोड", "हार्ड रीलोड", और "एम्टी कैशे एंड हार्ड रीलोड" के बीच अंतर क्या है? MySQL टेबल से दिनांकित रिकॉर्ड का नवीनतम सेट कैसे चुन सकता है जावास्क्रिप्ट के साथ महीने में दिनों की संख्या निर्धारित करने का सबसे अच्छा तरीका क्या है? जावा JAR फ़ाइल में एक संसाधन के लिए पथ कैसे प्राप्त करें एक डीटीओ को अपनाने के लिए ऑटोमैपर का उपयोग करना WinForms ऐप में फोकस किए गए नियंत्रण पाने का पसंदीदा तरीका क्या है? onbeforeunload इवेंट का उपयोग करते हुए, इस पृष्ठ पर रहने का चयन करने पर यूआरएल परिवर्तन ग्रिडलेआउट मैनेजर के साथ रीसाइक्लिंगदृश्य का उपयोग करते हुए सरल एंड्रॉइड ग्रिड उदाहरण (पुरानी ग्रिड दृश्य की तरह) जावास्क्रिप्ट में <script> </ script> को कैसे जोड़ें? __dirname और। / Node.js में क्या अंतर है? फ़ाइल से लाइन्स निकालें जो किसी अन्य फ़ाइल में दिखाई देती हैं

कैसे पता लगाने के लिए कि मैं दृश्य स्टूडियो 2008 के साथ कोड संकलित कर रहा हूँ?

क्या मुझे पता है कि मैं माइक्रोसॉफ्ट विज़ुअल स्टूडियो 2008 के तहत संकलन कर रहा हूं?

वेब के समाधान से एकत्रित समाधान "कैसे पता लगाने के लिए कि मैं दृश्य स्टूडियो 2008 के साथ कोड संकलित कर रहा हूँ?"

_MSC_VER और संभवतः _MSC_FULL_VER वह है जो आपको चाहिए। आप कुछ उपयोग के उदाहरणों के लिए किसी भी हाल में बूस्ट इंस्टॉल में visualc.hpp भी देख सकते हैं।

कंपाइलर के अधिक हाल के संस्करणों के लिए कुछ मान हैं:

 MSVC++ 14.1 _MSC_VER == 1911 (Visual Studio 2017) MSVC++ 14.1 _MSC_VER == 1910 (Visual Studio 2017) MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015) MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013) MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012) MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010) MSVC++ 9.0 _MSC_FULL_VER == 150030729 (Visual Studio 2008, SP1) MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008) MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005) MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio 2003) MSVC++ 7.0 _MSC_VER == 1300 MSVC++ 6.0 _MSC_VER == 1200 MSVC++ 5.0 _MSC_VER == 1100 

पाठ्यक्रम के ऊपर संस्करण संख्या में आपके दृश्य स्टूडियो के प्रमुख संस्करण को संदर्भित करता है जिसे आप बॉक्स में देखते हैं, न कि इस वर्ष के नाम पर। एक पूरी सूची यहां पायी जा सकती है । हाल ही में शुरू होकर , विजुअल स्टूडियो अपनी सीमाओं को मोनॉटोनिक रूप से अद्यतन करना शुरू कर देगा, जिसका अर्थ है कि आप सटीक कंपाइलर मूल्यों के बजाय सीमाओं की जांच कर लें।

cl.exe /? प्रयुक्त संस्करण का एक संकेत देगा, जैसे:

 c:\program files (x86)\microsoft visual studio 11.0\vc\bin>cl /? Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50727.1 for x86 ..... 

हाँ _MSC_VER मैक्रो है जो आपको कंपाइलर संस्करण प्राप्त करेगा। विजुअल सी ++ की रिलीज़ की अंतिम संख्या <compiler-major-version>.00.<build-number> के फार्म का है, जहां 00 मामूली संख्या है। इसलिए _MSC_VER <major-version><minor-version> मूल्यांकन करेगा।

आप इस तरह कोड का उपयोग कर सकते हैं:

 #if (_MSC_VER == 1500) // ... Do VC9/Visual Studio 2008 specific stuff #elif (_MSC_VER == 1600) // ... Do VC10/Visual Studio 2010 specific stuff #elif (_MSC_VER == 1700) // ... Do VC11/Visual Studio 2012 specific stuff #endif 

यह संकलक के लगातार रिलीज के बीच अपडेट प्रकट होता है, ने compiler-minor-version संशोधित नहीं किया है, इसलिए निम्न कोड की आवश्यकता नहीं है:

 #if (_MSC_VER >= 1500 && _MSC_VER <= 1600) // ... Do VC9/Visual Studio 2008 specific stuff #endif 

अधिक विस्तृत संस्करण की जानकारी (जैसे कंपाइलर बिल्ड संख्या) तक पहुंच अन्य बिल्टिन प्री-प्रोसेसर चर का उपयोग करके पाया जा सकता है

_MSC_VER को किसी विशिष्ट संस्करण संख्या में परिभाषित किया जाना चाहिए। आप या तो उस पर #ifdef कर सकते हैं, या आप वास्तविक परिभाषा का उपयोग कर सकते हैं और एक रनटाइम टेस्ट कर सकते हैं। (यदि किसी कारण से आप उस कम्पाइलर के आधार पर अलग-अलग कोड चलाएं जिसे आप संकलित किया था? हाँ, शायद आप #ifdef के लिए देख रहे थे। :))

_MSC_VER मैक्रो का उपयोग करके

एक अधिक सामान्य उत्तर के रूप में http://sourceforge.net/p/predef/wiki/Home/ , मैजिक का सूची बनाये रखता है, स्पेसिक कॉम्पाइलर, ऑपरेटिंग सिस्टम, आर्किटेक्चर, मानकों और अधिक का पता लगाने के लिए।

यह थोड़ा पुराना है लेकिन आपको शुरू करना चाहिए:

 //****************************************************************************** // Automated platform detection //****************************************************************************** // _WIN32 is used by // Visual C++ #ifdef _WIN32 #define __NT__ #endif // Define __MAC__ platform indicator #ifdef macintosh #define __MAC__ #endif // Define __OSX__ platform indicator #ifdef __APPLE__ #define __OSX__ #endif // Define __WIN16__ platform indicator #ifdef _Windows_ #ifndef __NT__ #define __WIN16__ #endif #endif // Define Windows CE platform indicator #ifdef WIN32_PLATFORM_HPCPRO #define __WINCE__ #endif #if (_WIN32_WCE == 300) // for Pocket PC #define __POCKETPC__ #define __WINCE__ //#if (_WIN32_WCE == 211) // for Palm-size PC 2.11 (Wyvern) //#if (_WIN32_WCE == 201) // for Palm-size PC 2.01 (Gryphon) //#ifdef WIN32_PLATFORM_HPC2000 // for H/PC 2000 (Galileo) #endif 

दृश्य स्टूडियो में, मदद पर जाएं | के बारे में और दृश्य स्टूडियो के संस्करण को देखो जो आप अपने ऐप को संकलित करने के लिए उपयोग कर रहे हैं।