c++ - std::_USE 未定义
问题描述
在 2005 年 1 月的版本中,我们有一些使用 CStdString 类的代码,它是 std::string 的包装器。
此类使用宏 SS_USE_FACET 将函数 std::use_facet 封装为 Microsoft C++ 的特殊实现。对于 Microsoft 编译器,它使用替代宏 _USE。
我们现在收到一个错误,即“_USE 不是 std 的成员”。
如果我在这个宏中注释掉微软的具体情况,它编译得很好。这是宏定义,Microsoft 版本已被注释掉。
#if defined(__SGI_STL_PORT) && (__SGI_STL_PORT >= 0x400 )
#if defined(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS) && defined(_MSC_VER)
#ifdef SS_ANSI
#pragma schMSG(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS defined!!)
#endif
#endif
#define SS_USE_FACET(loc, fac) std::use_facet<fac >(loc)
//#elif defined(_MSC_VER )
// #define SS_USE_FACET(loc, fac) std::_USE(loc, fac)
// ...and
#elif defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE)
#define SS_USE_FACET(loc, fac) std::use_facet(loc, (fac*)0)
#else
#define SS_USE_FACET(loc, fac) std::use_facet<fac >(loc)
#endif
这个可以吗?
我是否可以假设微软已经采用了标准实现并最终删除了特殊宏_USE?
解决方案
您的解决方案(注释掉 MS 特定行并回退到标准std::use_facet<fac>(loc)
)是正确的。
微软工程师在本页底部确认了这一点:
是的,此非标准宏已被有意删除。
[...]
您应该用 std::use_facet(loc) 替换此类调用
推荐阅读
- sql - 选择查询付款时间表
- php - 在php中的字符串数组中获取日期范围之间的每一天
- node.js - 如何处理 Heroku 空闲?
- python - 如何在 Python 中获取解析为列表/字典的 JSON 服务器响应的详细信息
- javascript - 如何映射 ListIem 响应值
- python - 在 PyPlot 子图中设置 Seaborn 中的图形大小
- android - 为什么我在尝试删除某些内容时不断从 Firebase 获取重复数据?
- php - 为什么循环打印错误的值?
- elasticsearch - OpenJDK 64 位服务器 VM 警告 Elasticsearch 在 Windows 10 中不起作用
- algorithm - 算法设计:你能提供一个没有最大重量限制的背包问题的解决方案吗?