una solo seguros seguro seguridad quitar que procedan potencialmente para fuente fichero ejecutar debe datos confianza como archivos aplicaciones advertencia adjuntos abrir c++ visual-studio visual-c++

c++ - solo - powershell advertencia de seguridad



Deshabilitar advertencias generadas mediante_CRT_SECURE_NO_DEPRECATE (10)

Combinación de @ [macbirdie] y @ [Adrian Borchardt] respuesta. Lo que demuestra ser muy útil en el entorno de producción (no estropear la advertencia previamente existente, especialmente durante la compilación multiplataforma)

#if (_MSC_VER >= 1400) // Check MSC version #pragma warning(push) #pragma warning(disable: 4996) // Disable deprecation #endif //... // ... strcat(base, cat); // Sample depreciated code //... // ... #if (_MSC_VER >= 1400) // Check MSC version #pragma warning(pop) // Renable previous depreciations #endif

¿Cuál es la mejor manera de desactivar las advertencias generadas a través de _CRT_SECURE_NO_DEPRECATE que les permite restablecerse con facilidad y funcionarán en todas las versiones de Visual Studio?


La mejor manera de hacerlo es mediante un simple control y evaluación. Normalmente hago algo como esto:

#ifndef _DEPRECATION_DISABLE /* One time only */ #define _DEPRECATION_DISABLE /* Disable deprecation true */ #if (_MSC_VER >= 1400) /* Check version */ #pragma warning(disable: 4996) /* Disable deprecation */ #endif /* #if defined(NMEA_WIN) && (_MSC_VER >= 1400) */ #endif /* #ifndef _DEPRECATION_DISABLE */

Todo lo que realmente se requiere es lo siguiente:

#pragma warning(disable: 4996)

No me ha fallado todavía; Espero que esto ayude


Otra respuesta tardía ... Así es como Microsoft lo usa en su wchar.h . Observe que también desactivan la advertencia C6386 :

__inline _CRT_INSECURE_DEPRECATE_MEMORY(wmemcpy_s) wchar_t * __CRTDECL wmemcpy(_Out_opt_cap_(_N) wchar_t *_S1, _In_opt_count_(_N) const wchar_t *_S2, _In_ size_t _N) { #pragma warning( push ) #pragma warning( disable : 4996 6386 ) return (wchar_t *)memcpy(_S1, _S2, _N*sizeof(wchar_t)); #pragma warning( pop ) }


Para el caso de advertencia por advertencia, es conveniente restaurarlo a la configuración predeterminada en algún momento, ya que lo está haciendo caso por caso.

#pragma warning(disable: 4996) /* Disable deprecation */ // Code that causes it goes here #pragma warning(default: 4996) /* Restore default */


Puede definir el símbolo _CRT_SECURE_NO_WARNINGS para suprimirlos y no definirlos para restablecerlos.


Puede desactivar las advertencias temporalmente en los lugares donde aparecen mediante el uso de

#pragma warning(push) #pragma warning(disable: warning-code) //4996 for _CRT_SECURE_NO_WARNINGS equivalent // deprecated code here #pragma warning(pop)

para que no desactive todas las advertencias, que a veces pueden ser perjudiciales.


Si no quiere contaminar su código fuente (después de todo, esta advertencia solo se presenta con el compilador de Microsoft), agregue el símbolo _CRT_SECURE_NO_WARNINGS a la configuración de su proyecto mediante "Proyecto" -> "Propiedades" -> "Propiedades de configuración" -> "C / C ++ "->" Preprocesador "->" Definiciones de preprocesador ".

También puede definirlo justo antes de incluir un archivo de encabezado que genere esta advertencia. Deberías agregar algo como esto

#ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif

Y solo un pequeño comentario, asegúrese de entender lo que significa esta advertencia, y tal vez, si no tiene la intención de utilizar otros compiladores que MSVC, considere usar una versión más segura de funciones, es decir, strcpy_s en lugar de strcpy.


También puede utilizar las sobrecargas de plantillas seguras , que lo ayudarán a reemplazar las llamadas no seguras por otras seguras donde sea posible deducir fácilmente el tamaño del búfer (matrices estáticas).

Solo agregue lo siguiente:

#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1

Luego arregle las advertencias restantes a mano, usando las funciones _s.


Trabajo en un proyecto multiplataforma, por lo que no puedo usar la función _s y no quiero contaminar mi código con el código específico de Visual Studio.
mi solución es desactivar la advertencia 4996 en el proyecto de estudio visual. vaya a Proyecto -> Propiedades -> Propiedades de configuración -> C / C ++ -> Avanzado -> Deshabilitar advertencia específica agregue el valor 4996.
si también usa la biblioteca mfc y / o atl (no es mi caso) defina antes incluir mfc _AFX_SECURE_NO_DEPRECATE y antes incluya atl _ATL_SECURE_NO_DEPRECATE.
Utilizo esta solución en Visual Studio 2003 y 2005.

ps si usa solo Visual Studio, las sobrecargas de plantillas seguras podrían ser una buena solución.


puede deshabilitar la comprobación de seguridad. ir

Proyecto -> Propiedades -> Propiedades de configuración -> C / C ++ -> Generación de código -> Comprobación de seguridad

y seleccione Deshabilitar comprobación de seguridad (/ GS-)