Visual Studio编译scanf函数报错提示:C4996

Visual Studio2017使用scanf函数报错C4996

严重性 代码 说明 项目 文件 禁止显示状态
错误 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. study1 e:\code\visual studio 2017\temporary\study1\study1\study1源.cpp 57



解决方案:

1.将关闭的警告的代码的特定行警告杂注, #pragma warning(suppress : 4996)

2.可以启用警告文件中使用警告杂注, #pragma warning(disable : 4996)

3.添加行如#define EXAMPLE_MACRO_NAME含的头文件的任意行之前

4.把scanf改为scanf_s

5.取消勾选“SDL检查”:项目->属性->C/C++->SDL检查 ->否





官方解释和解决方案:

https://docs.microsoft.com/zh-cn/cpp/error-messages/compiler-warnings/compiler-warning-level-3-c4996?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev15.query%3FappId%3DDev15IDEF1%26l%3DZH-CN%26k%3Dk(C4996)%26rd%3Dtrue

当编译器遇到函数或被标记为的变量,则会发生 C4996弃用使用__declspec(deprecated)修饰符,或当你尝试访问函数、 类成员或具有 C + + 14 的 typedef [[弃用]] 属性。 你可以使用__declspec(deprecated)修饰符或[[deprecated]]属性自己库或标头文件来警告你有关已弃用的函数、 变量、 成员或 typedef 的客户端中。

备注

许多函数、 成员函数,模板函数和 Visual Studio 中的库中的全局变量标记为弃用 这些函数被弃用,因为它们可能具有不同的首选的名称,可能不安全或具有更加安全的变体,或可能已过时。 许多弃用消息包括不推荐使用的函数或全局变量的建议的替换。

若要解决此问题,我们通常建议你更改代码以改为使用建议的更安全的或更新函数和全局变量。 如果你需要使用现有的函数或变量,可移植性原因,可以关闭该警告。

若要将关闭的警告,而无需解决的问题

你可以通过将关闭的警告的代码的特定行警告杂注, #pragma warning(suppress : 4996) 你还可以启用警告文件中使用警告杂注, #pragma warning(disable : 4996)

你可以关闭该警告全局在命令行版本中使用 /wd4996命令行选项。

若要关闭的警告的 Visual Studio IDE 中的整个项目:

  • 打开属性页对话框为你的项目。 有关如何使用属性页对话框的信息,请参阅属性页
  • 选择配置属性, C/c + +高级页。
  • 编辑禁用特定警告属性来添加4996 选择确定要应用所做的更改。

你可以使用预处理器宏关闭弃用警告在库中使用的某些特定的类。 下面介绍了这些宏。

若要在 Visual Studio 中定义预处理器宏:

  • 打开属性页对话框为你的项目。 有关如何使用属性页对话框的信息,请参阅属性页
  • 展开配置属性 > C/c + + > 预处理器
  • 预处理器定义属性,添加宏名称。 选择“确定” 进行保存,然后重新生成项目。

若要仅在特定源文件中定义的宏,请添加行如#define EXAMPLE_MACRO_NAME包含的头文件的任意行之前。


猜你喜欢

转载自blog.csdn.net/loongstyle/article/details/80331233