四、宏: (其实呢, 我们所有的宏都包含在了 "stl_config.h"头文件中。)

//这些宏是怎么判断是否需要定义:是否有指定的宏,还有一些特定的编译器也可能支持。

4.1、 __STL_THROW_RANGE_ERRORS   //允许抛出范围异常。

4.2、 __STL_NO_BOOL   //没有定义原生_BOOL : if !define(_BOOL) __STL_NO_BOOL

4.3、 __STL_HAS_WCHAR_T   //有wchar_t类型。 if define(_WHCAR_T_IS_KEYWORD) define __STL_HAS_WCHAR_T

4.4、 __STL_NO_DRAND48   //不存在drand48 这个函数

4.5、 __STL_STATIC_TEMPLATE_MEMBER_BUG    //不支持在模板类中定义一个静态成员。

4.6、 __STL_STATIC_CONST_INIT_BUG    //支持static const int 类型可以直接在类中初始化。

4.7、 __STL_CLASS_PARTIAL_SPECIALIZATION    //支持局部特化。

4.8、 __STL_PARTIAL_SPECIALIZATION_SYNTAX   //类模板的部分排序(最近似推导)。

4.9、 __STL_FUNCTION_TMPL_PARTIAL_ORDER   //函数模板的部分排序(最近似推导)。

4.10、__STL_MEMBER_TEMPLATES    //支持模板类中还可以存在模板函数。

4.11、__STL_MEMBER_TEMPLATE_CLASSES    //支持模板类中存在内部类(内部类只能在当前类中进行使用)。

4.12、__STL_TEMPLATE_PRIENDS    //支持一个模板类可以成为其他类的友元类。

4.13、__STL_EXPLICIT_FUNCTION_TMPL_ARGS    //支持函数对模板参数的推导。

4.14、__STL_LIMITED_DEFAULT_TEMPLATES    //支持前一个模板参数为后一个模板的默认值。

4.15、__STL_NON_TYPE_TMPL_PARAM_BUG   //支持 template<int size> 这种情况。

4.16、__SGI_STL_NO_ARROW_OPERATOR   //不支持iterator 重载 -> 操作符。

4.17、__STL_DEFAULT_CONSTRUCTOR_BUG   //不支持 类似 int(10) 这种做法。

4.18、__STL_USE_EXCEPTIONS    //支持异常。

4.19、__STL_USE_NAMESPACES   //支持命名空间。

4.20、__STL_NO_EXCEPTION_HEADER    //没有exception的头文件<exception>

4.21、__STL_NO_BAD_ALLOC    //没有<new> 或者 <new>头文件中没有bad_alloc class.

4.22、__STL_LONG_LONG    //支持long long

4.23、__STL_USE_CONCEPT_CHECKS

4.24、__STL_NO_USING_CLAUSE_IN_CLASS   //不支持类定义当中使用using。

4.25、__STL_NO_FRIEND_TEMPLATE_CLASS    //不支持模板类成为其他类的有元。

4.26、__STL_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE   //不支持一个指针成为一个模板参数。

4.27、__STL_MEMBER_TEMPLATE_KEYWORD

4.28、使用实例:
4.28.1、#define _BEGIN_NAMESPACE namespace xiaohai{ //使用一个前的begin 和一个后的end 来代替namespace
#define _END_NAMESPACE };

转载于:https://www.cnblogs.com/xiaohaige/p/6784588.html

stl_config.h基本宏相关推荐

  1. c语言limits.h_ (limits.h)C ++中(整数类型的大小)的宏常量

    c语言limits.h C ++宏常量(整数类型的大小) (C++ Macro constants of (sizes of integral types)) In this tutorial, we ...

  2. RT_Thead_board.h中的宏配置

    1.board.h的宏 想要使用某个外设,就可以去board.h里开启对应的宏. 下面是board.h里涵盖的宏的思维导图,一目了然. 2.配置 开启宏并不是唯一的步骤,在注释里还有详细的操作步骤说明 ...

  3. STL源码剖析—stl_config

    操作系统:centos 6.4 STL源码版本:3.3 前言:     要看一个项目的源码,首先要选中切入点.     那么在sgi stl 标准库中,其切入点是什么呢?     答案是:stl_co ...

  4. 【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译 | 编译器指示字 )

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  5. python宏替换_#和##在宏替换中的作用

    #include #define f(a,b) a##b #define g(a)  #a #define h(a) g(a) int main() { printf("%s/n" ...

  6. c语言是以文件为单位编译,c语言从头开始(三:编译器工作原理) (我们还可以自己编写头文件后缀是xx.h并把它当前代码文件所在目录我们要用就可以直接通过下面代码使用)...

    c语言从头开始(三:编译器工作原理) [[枫歌枫歌]c语言从头开始(三:编译器工作原理)]https://toutiao.com/group/6568056688174170628/?iid=1590 ...

  7. enum-使用宏管理你的枚举型数据

    高级枚举型定义实现 C源文件 #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #includ ...

  8. linux宏命令编辑,linux-vim宏定义(三)

    什么是宏 计算机科学里的宏(Macro),是一种批量批处理的称谓.一般说来,宏是一种规则或模式,或称语法替换 ,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串 ...

  9. C语言中 *.c和*.h文件的区别!

    C语言中 *.c和*.h文件的区别!      这是HR面试我的一道题,没技术上含量,不过细想起来,还是C语言的最基本的知识!俗话说,目标决定动力,细节决定成败! C文件就是C语言系列的源文件,而H文 ...

最新文章

  1. give root password for maintenance 启动异常的解决
  2. android authtype=1,【报Bug】plus.screen.lockOrientation在android里引起闪退
  3. 栈----生产者消费者实例
  4. 咸鱼翻身 汉能薄膜是如何做到的?
  5. socket buffer套接字缓存
  6. Android无法优化应用,Android应用优化总结
  7. HttpHandler与HttpModule的用处与区别
  8. 用php 用拼出一个菱形_这可是我没来过的杭州呀!远在开封的他,用一种特殊的方式,拼出一个彩色杭州...
  9. 易语言html到画板,易语言画板使用方法图解
  10. linux禁用ssh弱加密算法,SSHSSL弱加密算法漏洞修复
  11. html 目录生成器,Tocify:动态节点目录菜单生成器_html/css_WEB-ITnose
  12. Hive Tuning(三) 从查询计划看hive.auto.convert.join的好处
  13. 城市智慧能源系统顶层设计研究
  14. MATLAB图像处理植物叶片面积计算
  15. Cordova app中点击打开微信功能
  16. Android 10 添加第三方输入法为系统默认输入法
  17. 逆向脱壳-fsg手动脱壳
  18. 微信转发指定的图文消息到朋友圈(JAVA版)
  19. 如何对互联网上产生的舆情传播动态进行分析的方法
  20. 张俊 中国科技大学 计算机,张俊-中国科学院大学-UCAS

热门文章

  1. win10桌面计算机打不开,win10系统桌面图标打不开的解决技巧
  2. 网站SEO优化之如何维护网站权重?
  3. 简述在虚拟机中安装 centos 的过程_从零构建Fabric开发运行环境手册(一):安装OS虚拟机(CentOS)...
  4. android项目中导入opencv库,将第二个JNI库包含到我的Android项目(OpenCV)后...
  5. 项目收获与体会_员工之声|在项目实践中提高,在团队合作中成长——参与项目有感...
  6. 制作血条_unity-UGUI如何制作血条
  7. 关于android从入门到精通4.1.9范例1出现的闪退的问题
  8. 网元——就是网络中的元素,网络中的设备。总之,网元是网络管理中可以监视和管理的最小单位...
  9. mongodb 3.2配置内存缓存大小为MB/MongoDB 3.x内存限制配置
  10. elasticsearch 索引搜索和索引性能优化配置——思路:去掉不必要的数据,减小数据的磁盘空间占用,同时提升性能...