ant*_*nti 4 c++ printf visual-studio
我正在尝试使用 Visual Studio 2017 编译一些非常旧的代码。当我构建它时,我得到以下信息:
Error C1189 #error: Macro definition of snprintf conflicts with Standard Library function declaration
(compiling source file ordeviceinput_device.cxx) ordeviceinput
c:\program files (x86)\windows kits\10\include\10.0.17134.0\ucrt\stdio.h
Run Code Online (Sandbox Code Playgroud)
根据谷歌的说法,这是因为snprintf自从编写此代码(2008 年)以来,Visual Studio 中已添加了 的定义。问题是,我在任何地方都找不到代码中的定义。包含的标题很多,我无法全部搜索。
有没有解决的办法?
还是我需要在旧版本的 VS 中构建?
Visual Studio 14+ 定义snprintf为_snprintfin stdio.h.
您的代码(或您包含的第 3 方代码)可能也以相同的方式定义它,因此它不起作用。
搜索这样的一行:
#define snprintf _snprintf
Run Code Online (Sandbox Code Playgroud)
并将其更改为:
#if _MSC_VER < 1900
# define snprintf _snprintf
#endif
Run Code Online (Sandbox Code Playgroud)
如何在 Visual Studio 中搜索:
#\s*define\s+snprintf| 归档时间: |
|
| 查看次数: |
1856 次 |
| 最近记录: |