{"id":771,"date":"2011-05-13T21:28:08","date_gmt":"2011-05-13T19:28:08","guid":{"rendered":"http:\/\/blog.m-ri.de\/?p=771"},"modified":"2011-05-16T23:13:24","modified_gmt":"2011-05-16T21:13:24","slug":"_msc_ver-und-die-bisherigen-werte-fur-die-bekannten-compiler","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2011\/05\/13\/_msc_ver-und-die-bisherigen-werte-fur-die-bekannten-compiler\/","title":{"rendered":"_MSC_VER, _MFC_VER und die bisherigen Werte f\u00fcr die bekannten Compiler"},"content":{"rendered":"<p>Die <em>Microsoft<\/em> C\/C++ Compiler haben schon immer eine durchg\u00e4ngige Versionsnummer, die mit den Produkten in denen sie eingebunden sind (z.B. <em>VS-2010<\/em>) nicht zu tun hat.<\/p>\n<p>Diese Produktversion spiegelt auch auch in der vordefinierten Compiler Pr\u00e4prozessor Variable <em>_MSC_VER <\/em>wieder. \u00dcber diese Variable ist es zum Beispiel m\u00f6glich verschiedene <em>CRT<\/em> oder <em>STL<\/em> Library Eigenarten abzufragen und entsprechen den eigenen Code f\u00fcr mehrere Compiler lauff\u00e4hig zu machen.  Gleiches gilt nat\u00fcrlich auch f\u00fcr den Code der <em>MFC<\/em> (siehe Anmerkung am Fu\u00df der Tabelle).<\/p>\n<p>Hier eine kleine Tabelle der Werte, die <em>_MSC_VER <\/em>f\u00fcr die verschiedenen Compiler annimmt mit ein paar zus\u00e4tzlichen Hinweisen.<\/p>\n<pre>_MSC_VER\u00a0 = Compiler\r\n510 \u00a0= C Compiler 5.1 (DOS)     - 1988?\r\n       Mein aller erster Kontakt mit dem MS-Compiler\r\n600\u00a0 = C Compiler 6.x (DOS)     - 1990?\r\n700\u00a0 =\u00a0C\/C++ 7.0                - 1992\r\n       Die UI war damals die PWB. MFC 1.0 wurde ver\u00f6ffentlicht\r\n800\u00a0 = Visual C++ 1.0           - 1993\r\n       Existierte IMHO als 16bit und 32bit Compiler\r\n900\u00a0 = Visual C++ 2.0\r\n       Existierte IMHO als 16bit und 32bit Compiler. MFC 3.0\r\n1000 = Visual C++ 4.0           - 1995-03 ?\r\n       Ab dieser Verison nur noch 32bit Compiler. MFC 4.0\r\n???? = Visual C++ 4.1\r\n       War nur f\u00fcr MSDN Subscriber verf\u00fcgbar. Kam mit erstem Game\/DirectX SDK.\r\n???? = Visual C++ 4.2 und 4.21\r\n       Erste Cross-Platform Version f\u00fcr Mac und PC. MFC 4.2, 4.21\r\n1100 = Visual Studio 97 (5.0)   - 1997\r\n       Enthielt weiterhin MFC 4.21\r\n1200 = Visual C++ 6.0           - 1998-06\r\n       Popul\u00e4rtse VC Version. MFC 6.0\r\n1300 = Visual Studio.NET (2002) - 2002-02-13\r\n       .NET h\u00e4lt Einzug. MFC 7.0\r\n1310 = Visual Studio.NET 2003   - 2003-04-24\r\n       MFC 7.1\r\n1400 = Visual Studio 2005       - 2005-11-07\r\n       MFC 8.0\r\n1500 = Visual Studio 2008       - 2007-11-19\r\n       MFC 9.0\r\n1600 = Visual Studio 2010       - 2010-04-10\r\n       MFC 10.0\r\n1700 = Visual C++ 2011          - 2011 ???\r\n       Produktname noch offen evtl. WinC++<\/pre>\n<p>Noch ein Hinweis auf <em>_MFC_VER:<br \/>\n<\/em>In der Tabelle habe ich nur die Versionen der zum Compiler passenden MFC Versionen aufgef\u00fchrt. Die <em>MFC<\/em> setzt einen Define mit dem Namen <em>_MFC_VER <\/em>entsprechend. Dieser definiert ein <em>WORD<\/em> im Format <em>0xVVRR<\/em>. Wobei VV f\u00fcr die Version der <em>MFC<\/em> steht in hexadezimaler schreibweise und RR f\u00fcr die Revision allerdings in dezimaler Schreibweise. Die aktuelle <em>_MFC_VER <\/em>von <em>VS-2010 <\/em>hat also den Wert 0x0A00 und in der MFC 4.21 wurde _MFC_VER als 0x0421 definiert.<\/p>\n<p>PS: Auf die Idee f\u00fcr diese Tabelle kam ich durch eine Diskussion mit einem Teilnehmer auf der <a href=\"http:\/\/cpp.adc2011.de\/\">ADC f\u00fcr C++ in Prien<\/a>, der auch schon x-Jahre mit dem MS-Compiler verbracht hat wie ich, und wir \u00fcber die Entwicklung der Sprache C\/C++ nachgedacht haben und was wann als Innovation unsere Programme ver\u00e4nderte. Eben ein typisches Bits+Bytes Gespr\u00e4ch&#8230; \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Microsoft C\/C++ Compiler haben schon immer eine durchg\u00e4ngige Versionsnummer, die mit den Produkten in denen sie eingebunden sind (z.B. VS-2010) nicht zu tun hat. Diese Produktversion spiegelt auch auch in der vordefinierten Compiler Pr\u00e4prozessor Variable _MSC_VER wieder. \u00dcber diese Variable ist es zum Beispiel m\u00f6glich verschiedene CRT oder STL Library Eigenarten abzufragen und entsprechen &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2011\/05\/13\/_msc_ver-und-die-bisherigen-werte-fur-die-bekannten-compiler\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201e_MSC_VER, _MFC_VER und die bisherigen Werte f\u00fcr die bekannten Compiler\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[30,4,3,31],"tags":[370,272,273,352,43],"class_list":["post-771","post","type-post","status-publish","format-standard","hentry","category-c","category-mfc","category-programmieren","category-vs-tipps-tricks","tag-c","tag-cc","tag-compiler","tag-mfc","tag-microsoft"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/771","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/comments?post=771"}],"version-history":[{"count":1,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/771\/revisions"}],"predecessor-version":[{"id":850,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/771\/revisions\/850"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=771"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=771"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}