Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Referencia
Los proyectos de Abrir Carpeta que no usan CMake pueden almacenar las opciones de configuración del proyecto para IntelliSense en un archivo CppProperties.json. (Los proyectos de CMake usan un archivo CMakeSettings.json.) Una configuración consta de pares nombre/valor y define rutas de inclusión, modificadores del compilador y otros parámetros. Para más información sobre cómo agregar configuraciones en un proyecto de Open Folder, consulte Proyectos de Open Folder para C++. En las secciones siguientes se resumen las diversas opciones de configuración. Para obtener una descripción completa del esquema, vaya a CppProperties_schema.json, cuya ruta de acceso completa se da en la parte superior del editor de código cuando CppProperties.json está abierta.
Propiedades de configuración
Una configuración puede tener cualquiera de las propiedades siguientes:
| Nombre | Descripción |
|---|---|
inheritEnvironments |
Especifica qué entornos se aplican a esta configuración. |
name |
Nombre de configuración que aparecerá en la lista desplegable de configuración de C++. |
includePath |
Lista separada por comas de carpetas que se deben especificar en la ruta de inclusión (se asigna a /I para la mayoría de los compiladores) |
defines |
Lista de macros que se deben definir (se asigna a /D para la mayoría de los compiladores) |
compilerSwitches |
Uno o varios interruptores adicionales que pueden influir en el comportamiento de IntelliSense. |
forcedInclude |
Cabecera que se incluirá automáticamente en cada unidad de compilación (se asigna a /FI para MSVC o -include para clang). |
undefines |
Lista de macros que se van a indefinir (se asigna a /U para MSVC) |
intelliSenseMode |
Motor de IntelliSense que va a ser utilizado. Puede especificar una de las variantes predefinidas específicas de la arquitectura para MSVC, gcc o Clang. |
environments |
Conjuntos de variables definidos por el usuario que funcionan como variables de entorno en un símbolo del sistema y a los que se accede mediante la macro ${env.VARIABLE}. |
Valores de intelliSenseMode
El editor de código muestra las opciones disponibles cuando empieza a escribir:
En esta lista se muestran los valores admitidos:
windows-msvc-x86windows-msvc-x64windows-msvc-armwindows-msvc-arm64android-clang-x86android-clang-x64android-clang-armandroid-clang-arm64ios-clang-x86ios-clang-x64ios-clang-armios-clang-arm64windows-clang-x86windows-clang-x64windows-clang-armwindows-clang-arm64linux-gcc-x86linux-gcc-x64linux-gcc-arm
Nota: Los valores msvc-x86 y msvc-x64 solo se admiten por motivos heredados. En su lugar, use las variantes windows-msvc-*.
Entornos predefinidos
Visual Studio proporciona los siguientes entornos predefinidos para Microsoft C++ que se asignan al Símbolo del sistema de comandos para desarrolladores correspondiente. Al heredar uno de estos entornos, puede hacer referencia a cualquiera de las variables de entorno mediante la propiedad env global con esta sintaxis de macro: ${env.VARIABLE}.
| Nombre de variable | Descripción |
|---|---|
vsdev |
El entorno de Visual Studio predeterminado. |
msvc_x86 |
Compilar para x86 usando herramientas x86. |
msvc_x64 |
Compilar para AMD64 con herramientas de 64 bits. |
msvc_arm |
Compilar para ARM con herramientas de x86. |
msvc_arm64 |
Compilar para ARM64 con herramientas de x86. |
msvc_x86_x64 |
Compilar para AMD64 con herramientas de x86. |
msvc_arm_x64 |
Compilar para ARM con herramientas de 64 bits. |
msvc_arm64_x64 |
Compilar para ARM64 con herramientas de 64 bits. |
Cuando se instala la carga de trabajo de Linux, los entornos siguientes están disponibles para seleccionar como destino Linux y WSL de forma remota:
| Nombre de variable | Descripción |
|---|---|
linux_x86 |
Apuntar al Linux x86 de manera remota. |
linux_x64 |
Apuntar a Linux x64 de forma remota. |
linux_arm |
Apuntar a Linux ARM de forma remota. |
Entornos definidos por el usuario
Opcionalmente, puede usar la environments propiedad para definir conjuntos de variables en CppProperties.json global o por configuración. Estas variables se comportan como variables de entorno en el contexto de un proyecto de Open Folder. Puede acceder a ellos con la ${env.VARIABLE} sintaxis desde tasks.vs.json y launch.vs.json después de definirlos aquí. Sin embargo, podrían no estar configurados como variables de entorno reales en ningún símbolo del sistema que Visual Studio use internamente.
Visual Studio 2019, versión 16.4 y posteriores: las variables específicas de configuración definidas en CppProperties.json son reconocidas automáticamente por los objetivos y tareas de depuración sin la necesidad de configurar inheritEnvironments. Los destinos de depuración se inician automáticamente con el entorno especificado en CppProperties.json.
Visual Studio 2019, versión 16.3 y anteriores: cuando se consume un entorno, debe especificarlo en la inheritsEnvironments propiedad incluso si el entorno se define como parte de la misma configuración; la environment propiedad especifica el nombre del entorno. En el ejemplo siguiente se muestra una configuración para habilitar IntelliSense para GCC en una instalación de MSYS2. Observe cómo la configuración define y hereda el entorno mingw_64 y cómo la propiedad includePath puede acceder a la variable INCLUDE.
"configurations": [
{
"inheritEnvironments": [
"mingw_64"
],
"name": "Mingw64",
"includePath": [
"${env.INCLUDE}",
"${workspaceRoot}\\**",
],
"intelliSenseMode": "linux-gcc-x64",
"environments": [
{
"MINGW64_ROOT": "C:\\msys64\\mingw64",
"BIN_ROOT": "${env.MINGW64_ROOT}\\bin",
"FLAVOR": "x86_64-w64-mingw32",
"TOOLSET_VERSION": "9.1.0",
"PATH": "${env.MINGW64_ROOT}\\bin;${env.MINGW64_ROOT}\\..\\usr\\local\\bin;${env.MINGW64_ROOT}\\..\\usr\\bin;${env.MINGW64_ROOT}\\..\\bin;${env.PATH}",
"INCLUDE": "${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\tr1;${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\${env.FLAVOR};",
"environment": "mingw_64"
}
]
}
]
Al definir una "environments" propiedad dentro de una configuración, invalida las variables globales que tengan los mismos nombres.
Macros integradas
Dentro de CppProperties.json tiene acceso a las macros integradas siguientes:
| Macro | Descripción |
|---|---|
${workspaceRoot} |
La ruta de acceso completa a la carpeta del área de trabajo. |
${projectRoot} |
Ruta de acceso completa a la carpeta donde CppProperties.json se coloca |
${env.vsInstallDir} |
La ruta de acceso completa a la carpeta donde está instalada la instancia en ejecución de Visual Studio. |
Ejemplo
Si el proyecto tiene una carpeta include y también incluye *windows.h* y otros encabezados comunes de Windows SDK, es posible que quiera actualizar CppProperties.json el archivo de configuración con los siguientes elementos:
{
"configurations": [
{
"name": "Windows",
"includePath": [
// local include folder
"${workspaceRoot}\\include",
// Windows SDK and CRT headers
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\ucrt",
"${env.NETFXSDKDir}\\include\\um",
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\um",
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\shared",
"${env.VCToolsInstallDir}\\include"
]
}
]
}
Nota:
%WindowsSdkDir% y %VCToolsInstallDir% no se establecen como variables de entorno globales. Asegúrese de empezar devenv.exe desde un símbolo del sistema para desarrolladores que defina estas variables. (Escriba "desarrollador" en el menú Inicio de Windows para buscar un acceso directo del símbolo del sistema para desarrolladores).
Solución de errores de IntelliSense
Si no ve el IntelliSense esperado, puede solucionarlo dirigiéndose a Herramientas>Opciones>Editor de Texto>C/C++>Avanzado y estableciendo Habilitar registro en true. Para empezar, pruebe a establecer Nivel de registro en 5 y Filtro de registro en 8.
La salida se canaliza a la Ventana de Salida y está visible al elegir Mostrar salida de: Registro de Visual C++. La salida contiene, entre otras cosas, la lista de rutas de inclusión reales que IntelliSense intenta utilizar. Si las rutas de acceso no coinciden con las de CppProperties.json, intente cerrar la carpeta y eliminar la subcarpeta .vs que contiene datos de exploración en caché.
Para solucionar los errores de IntelliSense causados por rutas de inclusión faltantes, abra la pestaña Lista de errores y, a continuación, filtre su salida a "Solo IntelliSense" y al código de error E1696 "no se puede abrir el archivo de origen ...".