在用Visual Studio 2013编译一个旧的VC++项目时,出现大量的这样的警告:
1>c:\program files (x86)\microsoft visual studio 12.0\vc\atlmfc\include\afx.h(38): warning C4996: 'MBCS_Support_Deprecated_In_MFC': MBCS support in MFC is deprecated and may be removed in a future version of MFC.
1> c:\program files (x86)\microsoft visual studio 12.0\vc\atlmfc\include\afx.h(33) : see declaration of 'MBCS_Support_Deprecated_In_MFC'
出现这样的警告,原因是因为:
由于历史原因,MFC同时支持 Unicode 和 MBCS(multi-byte character set),但 Unicode 日渐变得流行,而 MBCS 逐渐用得越来越少,所以,新版本的 MFC 已经把 MBCS 作为过时的方法,所以用新版本的 Visual Studio 编译 MBCS 程序的时候会出现这样的警告信息,建议大家在新的程序中废弃 MBCS 而采用 Unicode。
关于程序支持 Unicode 还是 MBCS,设置选项在这里:
但是,对于已经采用 MBCS 的旧版的VC++程序,我们不打算将其迁移至 Unicode,又不想见到大量的 C4996 警告,怎么办呢?关闭编译器的 C4996 警告,需要在 preprocessor 定义中增加 NO_WARN_MBCS_MFC_DEPRECATION:
参考文章: