You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调试LZO项目时遇snprintf宏定义与标准库函数声明冲突问题

解决VS2015调试LZO项目时snprintf宏定义冲突问题

碰到这个问题我太熟了!我之前用CMake编译LZO原始代码后,调试VS项目lzo.sln时也遇到了一模一样的错误:

#error: Macro definition of snprintf conflicts with Standard Library function declaration

冲突原因

VS2015开始,微软已经在标准库中原生实现了snprintf函数,但LZO代码里的lzo_supp.h文件直接写了一行宏定义:

#define snprintf _snprintf

这就导致自定义宏和标准库的函数声明直接撞车,触发了编译器的错误提示。

解决方案

只需要把lzo_supp.h里的宏定义改成带条件编译的形式,确保只有在VS版本不支持原生snprintf时才启用这个宏:

#if (_MSC_VER < 1900)  // VS2015对应的_MSC_VER版本号是1900
#define snprintf _snprintf
#endif

或者用更通用的写法,直接检查snprintf是否未被定义:

#ifndef snprintf
#define snprintf _snprintf
#endif

改完之后重新编译项目,这个冲突错误就会消失。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:21:07