Existe-t-il un moyen de savoir si je compile sous une version spécifique de Microsoft Visual Studio?
la source
Existe-t-il un moyen de savoir si je compile sous une version spécifique de Microsoft Visual Studio?
_MSC_VER
et c'est peut _MSC_FULL_VER
- être ce dont vous avez besoin. Vous pouvez également examiner visualc.hpp dans n'importe quelle installation récente de boost pour quelques exemples d'utilisation.
Certaines valeurs pour les versions les plus récentes du compilateur sont:
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)
Le numéro de version ci-dessus se réfère bien sûr à la version principale de votre Visual Studio que vous voyez dans la zone À propos, pas à l'année dans le nom. Une liste complète peut être trouvée ici . Depuis récemment , Visual Studio commencera à mettre à jour ses plages de façon monotone, ce qui signifie que vous devez vérifier les plages, plutôt que les valeurs exactes du compilateur.
cl.exe /?
donnera un indice de la version utilisée, par exemple:
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 est cependant introuvable. Très étrange_MSC_VER
. J'espère que cela vous aideraOui _MSC_VER est la macro qui vous donnera la version du compilateur. Le dernier nombre de versions de Visual C ++ ont été de la forme
<compiler-major-version>.00.<build-number>
, où 00 est le nombre mineur. Ainsi_MSC_VER
évaluera<major-version><minor-version>
.Vous pouvez utiliser un code comme celui-ci:
Il semble que les mises à jour entre les versions successives du compilateur n'aient pas modifié le
compiler-minor-version
, le code suivant n'est donc pas requis:L'accès à des informations de version plus détaillées (telles que le numéro de compilation du compilateur) peut être trouvé à l'aide d'autres variables de pré-processeur intégrées ici .
la source
_MSC_VER_ == 1500
, si MS, a fait modifier le_MSC_VER
avec des mises à jour du compilateur, service packs, etc (je ne pense pas qu'ils aient jamais), le== 1500
contrôle pourrait se briser. C'est pourquoi je l'ai codé de cette façon._MSC_VER doit être défini sur un numéro de version spécifique. Vous pouvez soit #ifdef dessus, soit utiliser la définition réelle et effectuer un test d'exécution. (Si pour une raison quelconque, vous vouliez exécuter un code différent en fonction du compilateur avec lequel il a été compilé? Ouais, vous cherchiez probablement le #ifdef. :))
la source
En utilisant la
_MSC_VER
macro.la source
Comme réponse plus générale, http://sourceforge.net/p/predef/wiki/Home/ maintient une liste de macros pour détecter les compilateurs spécifiques, les systèmes d'exploitation, les architectures, les normes et plus encore.
la source
C'est un peu vieux mais ça devrait vous aider à démarrer:
la source
_MSC_VER
ne vous oblige pas à l'inclurestdio.h
, ce qui peut être facilement testéecho int i = _MSC_VER; > tmp.c
cl /nologo /c tmp.c
Dans Visual Studio, accédez à l'aide | à propos et regardez la version de Visual Studio que vous utilisez pour compiler votre application.
la source