C++

error C4996: 'scanf': esta función o variable puede no ser segura.

Error C4996 Scanf

Error de compilación de Visual Studio 2017 [error C4996: 'scanf': esta función o variable puede no ser segura] solución
Compile el proyecto en lenguaje C en VS 2012. Si usa la función scanf, aparecerá el siguiente error al compilar:

error C4996: 'scanf': esta función o variable puede no ser segura. Considere usar scanf_s en su lugar. Para deshabilitar la obsolescencia, use _CRT_SECURE_NO_WARNINGS. Consulte la ayuda en línea para obtener detalles.



La razón es que Visual C ++ 2012 usa rutinas de biblioteca en tiempo de ejecución más seguras. Nuevas funciones de seguridad CRT (aquellas con el sufijo '_s'), consulte:



'Versión de seguridad mejorada de la función CRT'
La solución a este problema se da a continuación:



Método 1: Reemplace la función anterior con las nuevas funciones CRT de seguridad.

Método 2: enmascare esta advertencia con el siguiente método:

|_+_|

Método 3: el método 2 no utiliza una función CRT más segura. Obviamente, no es un buen método para recomendar, pero no queremos cambiar el nombre de la función uno por uno. He aquí una forma más sencilla:



Defina la siguiente macro en el archivo de encabezado precompilado stdafx.h (también antes de que se incluyan los encabezados):

#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1

La función anterior se reemplaza automáticamente con funciones de seguridad CRT al vincular.

Nota: aunque este método usa una función nueva, no elimina la advertencia (para texto rojo), también debe usar el método dos (-_-). Es decir, se deben agregar las siguientes dos oraciones al archivo de encabezado precompilado stdafx.h:

#define _CRT_SECURE_NO_DEPRECATE

#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
Reimpreso de https://www.cnblogs.com/gb2013/archive/2013/03/05/SecurityEnhancementsInTheCRT.html