_MSC_VER
dan mungkin _MSC_FULL_VER
itulah yang Anda butuhkan. Anda juga dapat memeriksa visualc.hpp di sembarang peningkatan instal untuk beberapa contoh penggunaan.
Beberapa nilai untuk versi yang lebih baru dari kompiler adalah:
MSVC++ 14.24 _MSC_VER == 1924 (Visual Studio 2019 version 16.4)
MSVC++ 14.23 _MSC_VER == 1923 (Visual Studio 2019 version 16.3)
MSVC++ 14.22 _MSC_VER == 1922 (Visual Studio 2019 version 16.2)
MSVC++ 14.21 _MSC_VER == 1921 (Visual Studio 2019 version 16.1)
MSVC++ 14.2 _MSC_VER == 1920 (Visual Studio 2019 version 16.0)
MSVC++ 14.16 _MSC_VER == 1916 (Visual Studio 2017 version 15.9)
MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8)
MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)
MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)
MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)
MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)
MSVC++ 14.1 _MSC_VER == 1910 (Visual Studio 2017 version 15.0)
MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015 version 14.0)
MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013 version 12.0)
MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012 version 11.0)
MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010 version 10.0)
MSVC++ 9.0 _MSC_FULL_VER == 150030729 (Visual Studio 2008, SP1)
MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008 version 9.0)
MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005 version 8.0)
MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1)
MSVC++ 7.0 _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0)
MSVC++ 6.0 _MSC_VER == 1200 (Visual Studio 6.0 version 6.0)
MSVC++ 5.0 _MSC_VER == 1100 (Visual Studio 97 version 5.0)
Nomor versi di atas tentu saja mengacu pada versi utama dari studio Visual Anda yang Anda lihat di kotak about, bukan ke tahun dalam namanya. Daftar lengkap dapat ditemukan di sini . Mulai baru-baru ini , Visual Studio akan mulai memperbarui rentangnya secara monoton, artinya Anda harus memeriksa rentang, daripada nilai kompilator yang tepat.
cl.exe /?
akan memberikan petunjuk tentang versi yang digunakan, misalnya:
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
.....
#if defined _MSC_VER # if _MSC_VER >= 1800 # include <inttypes.h>
. inttypes.h tidak dapat ditemukan. Sangat aneh_MSC_VER
. Semoga ini bisa membantuYap _MSC_VER adalah makro yang akan memberi Anda versi kompiler. Jumlah rilis Visual C ++ terakhir adalah dalam bentuk
<compiler-major-version>.00.<build-number>
, di mana 00 adalah angka minor. Jadi_MSC_VER
akan dievaluasi<major-version><minor-version>
.Anda dapat menggunakan kode seperti ini:
Tampaknya pembaruan antara rilis berturut-turut dari kompiler, belum dimodifikasi
compiler-minor-version
, jadi kode berikut ini tidak diperlukan:Akses ke informasi versi yang lebih terperinci (seperti nomor kompiler build) dapat ditemukan menggunakan variabel pra-prosesor bawaan lainnya di sini .
sumber
_MSC_VER_ == 1500
, namun jika MS, memang memodifikasi_MSC_VER
pembaruan dengan kompiler, paket layanan, dll (saya rasa mereka tidak pernah punya), maka== 1500
cek bisa rusak. Itulah sebabnya saya mengkodekannya seperti itu._MSC_VER harus didefinisikan ke nomor versi tertentu. Anda dapat # jika ada di dalamnya, atau Anda dapat menggunakan define yang sebenarnya dan melakukan tes runtime. (Jika karena alasan tertentu Anda ingin menjalankan kode yang berbeda berdasarkan pada kompiler yang dikompilasinya? Ya, mungkin Anda mencari #ifdef. :))
sumber
Dengan menggunakan
_MSC_VER
makro.sumber
Sebagai jawaban yang lebih umum, http://sourceforge.net/p/predef/wiki/Home/ mengelola daftar makro untuk mendeteksi kompiler khusus, sistem operasi, arsitektur, standar, dan banyak lagi.
sumber
Ini agak lama tetapi harus membantu Anda memulai:
sumber
_MSC_VER
tidak mengharuskan Anda untuk memasukkanstdio.h
, yang dapat dengan mudah diujiecho int i = _MSC_VER; > tmp.c
cl /nologo /c tmp.c
Di studio visual, buka bantuan | tentang dan lihat versi Visual Studio yang Anda gunakan untuk mengkompilasi aplikasi Anda.
sumber