此功能或变量可能不安全.要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS

Joa*_*son 6 c++

我正在研究C++ DDL,但是我在某些地方遇到了以下问题:

C4996 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
Run Code Online (Sandbox Code Playgroud)

我确实尝试过#define _CRT_SECURE_NO_WARNINGS,但问题仍然存在.
这是代码:

sprintf(szDebugString, "%s: 0x%x (%s%s%i)", ptrName, (DWORD)funcPtr, interfaceName, interfaceVersion.c_str(), i);
Run Code Online (Sandbox Code Playgroud)

tro*_*foe 8

你必须定义_CRT_SECURE_NO_WARNINGS之前#include <Windows.h>.

或者,使用安全版本:

sprintf_s(szDebugString, sizeof(szDebugString), "%s: 0x%x (%s%s%i)",
    ptrName, (DWORD)funcPtr, interfaceName, interfaceVersion.c_str(), i);
Run Code Online (Sandbox Code Playgroud)

  • 或者标准中出现的那个:`snprintf`. (3认同)

Vya*_*lav 5

把这个定义放入stdafx.h.

例如

#pragma once
#define _CRT_SECURE_NO_WARNINGS

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>
Run Code Online (Sandbox Code Playgroud)


dav*_*vid 5

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

1- 打开项目的属性页对话框。

2- 选择配置属性 > C/C++ > 高级页面。

3- 编辑“禁用特定警告”属性以添加 4996。选择“确定”应用更改。