visual studio proyecto microsoft funciona descargar consola como community caracteristicas visual-c++ preprocessor multiplatform

visual-c++ - studio - proyecto en c++



Visual Studio: cómo comprobar el conjunto de herramientas de la plataforma C++ mediante programación (4)

Encontré el mismo problema y agregué mi propia definición de preprocesador para _MSC_PLATFORM_TOOLSET .
En las propiedades del proyecto en

  • C / C ++
  • Preprocesador
  • Definiciones del preprocesador

agregue _MSC_PLATFORM_TOOLSET = $ (PlatformToolsetVersion) para hacer que Visual Studio integre la versión actual del conjunto de herramientas al preprocesador para que su consulta

#if (_MSC_PLATFORM_TOOLSET > 100) ... #endif

finalmente funcionará

Tengo que crear un proyecto utilizando el conjunto de herramientas de la plataforma MSVC2012 y v100 (desde MSVC2010). Lamentablemente, estoy usando la función C ++ 11 " rango basado para " en todo el código. Me pregunto si existe una directiva de preprocesador que permita conocer el conjunto de herramientas de la plataforma actual en tiempo de compilación. Es decir

#if (_MSC_PLATFORM_TOOLSET > 100) # define ALLOW_RANGE_BASED_FOR 1 #else # define ALLOW_RANGE_BASED_FOR 0 #endif

Intenté usar la macro _MSC_VER , pero para ambos conjuntos de herramientas de plataforma está configurado en 1700 (y esto tiene sentido, porque todavía estoy usando MSVC2012). Agradecería cualquier sugerencia. Gracias.


La macro _MSC_FULL_VER es diferente para cada conjunto de herramientas de plataforma; y versión de Visual Studio. Para la vista previa (actual) de Visual Studio 2013, es 180020617 . Para Visual Studio 2012 con el Compilador CTP de noviembre de 2012 (que dio C ++ 11), era 170060315 . Al igual que _MSC_VER , los primeros 4 dígitos son los mismos para cada versión de Visual Studio; para Visual Studio 2012 siempre son 1700 . Aquí hay un ejemplo:

#ifdef _MSC_FULL_VER #if _MSC_FULL_VER == 170060315 // MSVS 2012; Platform Toolset v110 #elif _MSC_FULL_VER == 170051025 // MSVS 2012; Platform Toolset v120_CTP_Nov2012 #elif _MSC_FULL_VER == 180020617 // MSVS 2013; Platform Toolset v120 #endif #endif // _MSC_FULL_VER


Hay dos números de versión que realmente necesito saber al desarrollar C o C ++ con Visual Studio. Estos son el número de versión principal de Visual Studio y la versión principal / secundaria del compilador "cl".

El número de versión de Visual Studio se muestra en el cuadro de diálogo "Acerca de". Por ejemplo, para VS2012, veo "Versión 11.0.60610.01", por lo que el número de versión principal es "11".

Las herramientas de compilación como bakefile o CMake crearán archivos de solución dirigidos a una versión principal de Visual Studio.

La versión del compilador "mayor / menor" es el valor de la macro _MSC_VER. Aquí hay un pequeño programa que mostrará esto:

#include <stdio.h> /* * Compile and run this on a Visual Studio platform to get * the version identifier. */ #define PRINT_INT_MACRO(m) (printf("%s: /"%d/"/n", #m, m)) int main() { PRINT_INT_MACRO(_MSC_VER); return 0; }

Como dice el comentario, tienes que compilarlo con el compilador que deseas probar. Para ahorrarte la molestia, aquí hay una pequeña mesa:

Name Version _MSC_VER VS 6 6.0 1200 VS 2002 7.0 1300 VS 2003 7.1 1310 VS 2005 8.0 1400 VS 2008 9.0 1500 VS 2010 10.0 1600 VS 2012 11.0 1700 VS 2013 12.0 1800 VS 2015 13.0 1900

¡Espero que esto ayude!


No sé si lo arreglaron en VS2015, pero ciertamente funciona como se esperaba allí.

Creé el siguiente pequeño programa:

#include <iostream> using namespace std; int main() { cout << "_MSC_VER: " << _MSC_VER << endl; cout << "_MSC_FULL_VER: " << _MSC_FULL_VER << endl; cout << "_MSC_BUILD: " << _MSC_BUILD << endl; (void) getchar(); return 0; }

Agregué configuraciones de compilación para cada versión de plataforma desde VS2010 a VS2015, y _MSC_VER correspondía a la versión de PLATAFORMA como se indica arriba, a pesar de que siempre se compila en Visual Studio 2015 en un proyecto VS2015.

Aclamaciones,

Ian