VS2017 #error: : snprintf 的宏定义与标准库函数声明冲突
VS2017 #error: : Macro definition of snprintf conflicts with Standard Library function declaration
我正在尝试使用VS2017构建一个在VS 2010中开发的应用程序。构建应用程序时,出现以下错误:
错误: : snprintf 的宏定义与标准库函数声明冲突
我试图像这里一样解决这个问题。但它在我的情况下不起作用。
我正在使用带有VS10社区15.8.2的Windows 10。
正如问题中的错误所示,您有一个不再与当前版本兼容的宏定义snprintf
。
因此,您需要查找以下内容:
#define snprintf _snprintf
您可以删除它,或者如果您还需要使用 Visual Studio 2010 编译代码,则可以添加以下条件:
#if _MSC_VER < 1700
#define snprintf _snprintf
#endif
错误消息应该有助于告诉您哪个文件具有有问题的 #define。就我而言,这是错误的。CMAKE 正在添加一个标头(在我的情况下为my_config.h(,该标头不会通过跟踪错误代码直接显示。对#define snprintf进行解决方案广泛搜索_snprintf结果为零。
我是如何找到违规 #define 的:
-
尝试构建。
-
获取错误消息:#error:snprintf 的宏定义与标准库函数声明(编译源文件 D:\PathToFile\libmysql.c(冲突。 libmysql.c没有这样的定义,它包含的任何标头也没有。
-
双击错误消息。这会在新选项卡中打开stdio.h,在生成错误的行(在我的例子中为 1914 行(。
1906 #if defined snprintf 1907 // This definition of snprintf will generate "warning C4005: 'snprintf': macro 1908 // redefinition" with a subsequent line indicating where the previous definition 1909 // of snprintf was. This makes it easier to find where snprintf was defined. 1910 #pragma warning(push, 1) 1911 #pragma warning(1: 4005) // macro redefinition 1912 #define snprintf Do not define snprintf as a macro 1913 #pragma warning(pop) 1914 #error Macro definition of snprintf conflicts with Standard Library function declaration 1915 #endif
-
将鼠标悬停在单词snprintf上,它检查定义(在我的例子中是第 1906 行(。智能感知将在工具提示中显示|>| #define snprintf _snprintf。
-
右键单击单词snprintf(不是工具提示(,然后单击">速览定义"或">转到定义"。这将弹出有问题的 #define 您现在可以根据需要删除或修改。
493 #define ssize_t SSIZE_T 494 #define strcasecmp _stricmp 495 #define strncasecmp _strnicmp 496 #define snprintf _snprintf // <-- Offending line. 497 #define strtok_r strtok_s 498 #define strtoll _strtoi64 499 #define strtoull _strtoui64
-
就我而言,违规行是 496,我只是删除了它。
-
回到stdio.h并将鼠标悬停在snprintf单词上,它不应该再给你一个工具提示,因为它没有定义(我的也从紫色变成了白色(。
- 覆盖程序中的标准 C 库函数C++
- VS2017 #error: : snprintf 的宏定义与标准库函数声明冲突
- 为什么C++标准库容器函数 empty() 标记为 [[nodiscard]]?
- 在Xcode中使用C++17标准库中的bessel数学函数
- 在 MASM 中调用标准库函数
- 如何在标准库C/C++函数中进行gdb单步执行操作
- 标准库函数 abs() 在不同C++编译器上的异常行为
- 确定C++中用户输入的类型,而无需任何标准库函数
- 是否有用于双精度平方根反比的快速 C 或 C++ 标准库函数
- 为什么我能够在没有std::限定符的情况下调用这个C++标准库函数
- 如何使用标准库函数通过错误检查将字符串 (char*) 转换为数字
- 绑定模板化的标准库函数
- 在C++中使用标准库函数名称作为标识符是否有效
- C++中标准库函数的函数重载
- 为什么win32/标准库函数参数几乎总是作为指针而不是引用传递
- C++标准库函数和类是否包含在每个C++实现中
- C和c++标准库函数如何查找文件的末尾
- 是否有一个标准库函数来反转STL堆栈?
- 是std::命名空间中的C标准库函数的C++版本
- 为什么标准库函数中没有提供带有迭代器参数的重载?