首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >std::string源代码中宏的用法

std::string源代码中宏的用法
EN

Stack Overflow用户
提问于 2019-03-01 04:01:05
回答 1查看 1.6K关注 0票数 8

我正在编写一些使用std::string的c++代码。

我想看看代码是如何编写的,所以我进入了源代码。(ctrl +左键单击)。

我注意到,到处都是宏。

代码甚至以:

代码语言:javascript
复制
_STD_END
// Corresponds to: #define _STD_END }

我明白为什么宏很有用,并且我将它们用于我自己的Log.hpp文件,但是我不明白为什么每个人都要使用像_STD_END这样的宏,而不是仅仅编写}

为了澄清,我的问题是为什么std::string的作者P.J. Plauger决定以这种方式使用宏,如果我也应该这样做呢?

EN

回答 1

Stack Overflow用户

发布于 2019-03-01 06:48:50

这就是微软许可的Dinkumware库(尽管他们最近接管了他们版本的全部维护工作)。_STD_BEGIN_STD_END宏用于自定义std命名空间。有些编译器不支持(不是吗?)支持命名空间;对于这些编译器,宏扩展为空。有些编译器需要一些间接性,这些宏扩展成指令,将代码放入特定于实现者的名称空间(即名称以下划线开头,后面跟着大写字母的名称空间),该名称空间可能由using-指令补充,也可能不由using-指令补充,以将该名称空间的内容拉入std。在许多情况下,它们分别扩展为显而易见的、普通的namespace std {}

简而言之,它们是关于多平台库实现的可配置性。

我在Dinkumware工作了好几年,所以我有第一手的知识。

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

https://stackoverflow.com/questions/54933371

复制
相关文章

相似问题

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