Mic*_*zov 8 c warnings visual-studio
由于使用该函数,我在 Visual Studio 中收到此 C4996 错误scanf()。
事实证明,这个问题的解决方案是将这一行添加_CRT_SECURE_NO_WARNINGS到配置属性 -> C/C++ -> 预处理器 -> 预处理器定义 -> 编辑。
它完美地解决了问题,但我找不到这个东西的实际含义的正确解释。如果它禁用警告,为什么我的程序首先崩溃了?什么是“CRT”?
崩溃程序的示例:
#include <stdio.h>
main()
{
int number;
printf("enter a number\n");
scanf("%d", &number);
}
Run Code Online (Sandbox Code Playgroud)
CRT 是 Windows 中的 C 运行时库,它为您提供类似的功能,在 Linux 上它由GNU LibC (GLibc)scanf完成。
正如@jamieguinan指出的那样, scanf 存在一些安全缺陷,例如缓冲区溢出,其中用户提供的输入可能大于缓冲区的大小,导致其覆盖其他内存。
这就是 Visual Studio 警告您使用scanf_s更安全版本的scanf.
您可以将此预处理器定义放入代码中以禁用此警告:
#define _CRT_SECURE_NO_WARNINGS
Run Code Online (Sandbox Code Playgroud)
不过,如果您真的知道自己在做什么,则没有必要。
| 归档时间: |
|
| 查看次数: |
6988 次 |
| 最近记录: |