首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::_USE未定义

std::_USE未定义
EN

Stack Overflow用户
提问于 2018-06-01 06:16:42
回答 1查看 1.5K关注 0票数 2

我们使用类CStdString编写了一些代码,它是2005年1月版本中的std::string的包装器。

该类使用宏SS_USE_FACET封装函数std::use_facet,并为C++提供特殊的实现。对于Microsoft编译器,它使用另一个宏_USE。

我们现在收到了一个错误,即"_USE不是性病的成员“。

如果我在这个宏中注释掉了Microsoft的具体情况,它就会编译得很好。这是宏定义,并注释掉了Microsoft版本。

代码语言:javascript
复制
#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?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-24 07:05:29

您的解决方案(注释掉MS特定行并返回到标准std::use_facet<fac>(loc))是正确的。

此页底部的一位微软工程师证实了这一点。

是的,这个非标准宏是故意删除的. ..。 您应该用std::use_facet(loc)替换这些调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50637134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档