四、宏: (其实呢, 我们所有的宏都包含在了 "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 };

stl_config.h基本宏的更多相关文章

  1. STL stl_config.h

    stl_config.h . // Filename: stl_config.h . . // Comment By: 凝霜 . // E-mail: mdl2009@vip.qq.com . // ...

  2. STL源码剖析—stl_config

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

  3. 下位机多个".c, .h"文件的相互包含及排版

    一.背景: 自从接触单片机编程以来,由于工作上的需要,不可避免的时常会接手别人的代码,但常常由于上一位同事的编码随意性有点大,导致可读性非常的差,有时候不得不完全舍弃原有代码,推倒重来,无形中增加了工 ...

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

    C语言中 *.c和*.h文件的区别!  http://blog.163.com/jiaoruijun07@126/blog/static/68943278201042064246409/        ...

  5. .c和.h文件的区别(转载)

    一个简单的问题:.c和.h文件的区别学了几个月的C语言,反而觉得越来越不懂了.同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢? 2楼:子程序不要定义在 ...

  6. C语言中的宏展开

    #include<stdio.h> #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { printf(,) ...

  7. 读书笔记-详解C程序开发中 .c和.h文件的区别

    一个简单的问题:.c和.h文件的区别 学了几个月的C语言,反而觉得越来越不懂了.同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢? 2楼: 子程序不要定 ...

  8. C语言中.h和.c文件解析(很精彩)

    C语言中.h和.c文件解析(很精彩)   简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析 ...

  9. C语言中.h和.c文件解析

    整理自C语言中.h和.c文件解析(很精彩) Part.1(林锐<高质量C/C++编程>) 通过头文件来调用库功能.在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的 ...

随机推荐

  1. 基于Spring-WS的Restful API的集成测试

    在很多Java企业级应用中,Spring占据了非常重要的位置,这就导致了基本上的技术选型都是围绕着Spring来, 比方说笔者最近的项目需要开发一个Restful的API接口,选型的时候就说,客户架构 ...

  2. [lua] 你所不知道的lua nil值在可变参数函数中怎么处理!

    在lua中, 问题1:如果你在可变参数...中传入若干个参数,其中有的参数要带nil,这时怎么解决呢?(比如local function _test(...) end    _test(1, nil, ...

  3. 复杂SQL代码实例

    DECLARE @begin DATETIME,@end DATETIME,@shanghutype INT, @beginshanghuarea BIGINT ,@endshanghuarea bi ...

  4. 基于C#的UDP通信(使用UdpClient实现,包含发送端和接收端)

    UDP不属于面向连接的通信,在选择使用协议的时候,选择UDP必须要谨慎.在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重.但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小, ...

  5. SQL基本编程,分支语句,循环语句,存储过程,触发器

    基本编程: 定义变量 declare @变量名 数据类型 赋值 set @变量名 = 值 select @变量名 = 值 取值打印 select @变量名 print @变量名 映射到结果集 打印到消 ...

  6. 面试 -- ListView对其指定的子Item进行单独的刷新

    1,最近在面试题目的时候突然看到了问题"ListView对其指定的子Item进行单独的刷新",当时感觉一脸懵逼,还是第一次听到这个问题,也就是不能使用adapter.notifyD ...

  7. Windows Phone下页面跳转动画的实现

    写在前面的一些废话: 前段时间一直忙于其他的事情,好长时间没有更新博客,很多东西虽然看过.学过,但是没有仔细去思考,去总结,长时间不用或者用的少难免会遗忘.最近由于家里以及感情方面的事,人也变得有点怨 ...

  8. java学习笔记 --- 面向对象3

    一.创建对象是做了些什么事情? 图解: 二.static关键字 (1)静态的意思.可以修饰成员变量和成员方法. (2)静态的特点: 1.静态是随着类的加载就加载了.也是随着类的消失而消失了. 2.静态 ...

  9. Jenkins集成Docker

    大概过程如下图: 由于需要用到docker打包镜像,jenkins宿主机上需要安装docker,原先的jenkins server安装在centos6上无法运行docker,所以这里单独用一台cent ...

  10. 时效性福利:MindManager2017 破解攻略

    本文目的只是为了长期关注公众的活粉来谋个福利,24小时失效,没有提供盗版的意思 本文贡献的链接只存放2天,要下载的请从速~ 经过几个小时的奋斗,终于搞定了他,逆天我也终于可以从2016升级至2017~ ...