当前位置: 首页 > java >正文

“_snprintf”: 不是“std”的成员

  1. 确定 MSVC 的版本
    snprintf 的 C++11 标准实现与 MSVC 版本 直接相关,不同版本的 MSVC 对 C++11 标准的支持程度不同,尤其是在 std::snprintf 的实现上存在差异。
MSVC 版本_MSC_VER是否支持 std::snprintf替代实现兼容性说明
MSVC 2015+ (Visual Studio 2015 及更新)>= 1900✅ 支持完全遵循 C++11, 将 snprintf 定义在 std 命名空间。
MSVC 2013 (Visual Studio 2013)1800❌ 不支持::_snprintf_s需使用全局命名空间的 _snprintf_s,且参数格式不同。
MSVC 2012 及更早< 1800❌ 不支持::_snprintf仅提供非标准的 _snprintf,安全性较差(不检查缓冲区溢出)。
  1. 确定自己的代码或引用的第三方库有兼容性处理。如果没有,添加类似下面 Boost 这样的代码
#if ( defined(_MSC_VER) && _MSC_VER < 1900 ) || ( defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) )
# define BOOST_ASSERT_SNPRINTF(buffer, format, arg) std::sprintf(buffer, format, arg)
#else
# define BOOST_ASSERT_SNPRINTF(buffer, format, arg) std::snprintf(buffer, sizeof(buffer)/sizeof(buffer[0]), format, arg)
#endif
  1. 如果确定了是 MSVC 2015 以上且有兼容性处理,但还是提示错误的话,建议用 VS Code 搜索整个项目,是否有下面的代码,比如 Python.h 的头文件里。
#define snprintf _snprintf
  1. 如果存在,根据自己的情况,决定是注释该代码,或在自己的代码重新定义。

就博主而言,是混合使用 Python C API 和 C++ 时,删除了 #include <Python.h>,仅使用 #include <pybind11/pybind11.h>。pybind11 已经做了平台兼容处理。

http://www.xdnf.cn/news/9052.html

相关文章:

  • 【监控】Blackbox Exporter 黑盒监控
  • word的页眉页脚设置
  • 数据库的索引概述与常见索引结构
  • Unity性能优化
  • C++(4)
  • 解锁 Linux 内核潜能:高效参数调优实战指南
  • 《软件工程》第 3 章 -需求工程概论
  • vector的实现
  • TypeScript 针对 iOS 不支持 JIT 的优化策略总结
  • 裁判模型的定义与训练
  • 单片机简介
  • Postman基础操作
  • Vue 2 混入 (Mixins) 的详细使用指南
  • 如何通过AI辅助数据分析
  • leetcode-295 Find Median from Data Stream
  • 【科研绘图系列】R语言绘制柱状图(bar plot)
  • Vue中的 VueComponent
  • pytorch简单线性回归模型
  • 如何轻松地将文件从 iPhone 传输到 PC
  • Python基础教程:从零开始学习编程 - 第1-3天
  • 全光网络ICU床旁监护系统:重新定义重症监护的智慧中枢
  • python入门day01
  • UE5 Niagara Advance 学习笔记
  • git学习笔记
  • matlab实现激光腔长计算满足热透镜效应
  • JAVA 学习日志
  • 防火墙的SD-WAN功能
  • JAVA基础编程练习题--50道
  • 【Webtrees 用户手册】第 2 章 - 访客须知
  • 网易互娱游戏研发实习一面