gpt4 book ai didi

c++ - Visual Studio : Macro definition of snprintf conflict

转载 作者:搜寻专家 更新时间:2023-10-31 01:28:33 29 4
gpt4 key购买 nike

我正在尝试使用 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

根据 google 的说法,这是因为 snprintf 的定义自此代码编写以来(2008 年)已添加到 visual studio 中。问题是,我无法在任何地方找到代码中的定义。包含的标题很多,我无法全部搜索。

有解决办法吗?

或者我需要在旧版本的 VS 中构建吗?

最佳答案

Visual Studio 14+ 在 stdio.h 中将 snprintf 定义为 _snprintf

您的代码(或您包含的第 3 方代码)可能也以相同的方式定义它,因此它不起作用。

搜索这样一行:

#define snprintf _snprintf

并将其更改为:

#if _MSC_VER < 1900
# define snprintf _snprintf
#endif

如何在 Visual Studio 中搜索:

  • 编辑 -> 查找和替换 -> 在文件中搜索... (Ctrl+Shift+F)
  • 查找内容:
    #\s*define\s+snprintf
  • 查看:
    完整解决方案(包括外部项目)
  • 火柴盒
  • 使用正则表达式
  • 查找所有...

关于c++ - Visual Studio : Macro definition of snprintf conflict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51897245/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com