慢羊羊的空间

无为,无我,无欲,居下,清虚,自然

解决编译错误:C4996:'GetMouseMsg': This function is deprecated.

问题概述

EasyX 提供了两个头文件:

  • graphics.h
  • easyx.h

easyx.h 包含最新的函数,并且删掉了旧函数。graphics.h 引用了 easyx.h,同时提供了对旧函数的支持。使用 graphics.h 里面提供的旧函数时,会收到一个 Warning C4996,例如使用旧函数 GetMouseMsg,会收到编译提醒:

C4996:'GetMouseMsg': This function is deprecated. Instead, use this new function: getmessage. See https://docs.easyx.cn/getmessage for details.

在过去,Visual C++ 默认会将 C4996 归类为 Warning。新版本 VC++ 默认会将 C4996 归类为 Error,导致无法编译。

解决方法

如果需要编译含有旧版本函数的代码,需要设置项目属性,不要把 C4996 当作 Error 即可。有两种方法设置,任选其一:

1. 使用代码设置

在代码前面增加一条预编译指令:

#pragma warning(default: 4996)

再次编译项目,之前的 error 会变成 warning,项目可以编译通过。

2. 修改项目设置

在 VS 的 Solution Explorer 里右击项目名称,选 Properties,在弹出的窗口中,设置 Configuration Properties -> C/C++ -> General -> SDL checks 为 No (/sdl-),如下图所示:

再次编译项目,会看到 C4996 会标记为 Warning,不影响编译。

建议

除非特殊情况,否则仍然推荐将旧函数替换为新版本的对应函数。新的鼠标消息处理函数功能更强大,使用更方便,请参考:https://codebus.cn/yangw/mouse-operation 。

分享到

添加评论