stl_config.h基本宏
四、宏: (其实呢, 我们所有的宏都包含在了 "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基本宏的更多相关文章
- STL stl_config.h
stl_config.h . // Filename: stl_config.h . . // Comment By: 凝霜 . // E-mail: mdl2009@vip.qq.com . // ...
- STL源码剖析—stl_config
操作系统:centos 6.4STL源码版本:3.3 前言: 要看一个项目的源码,首先要选中切入点. 那么在sgi stl 标准库中,其切入点是什么呢? 答案是:stl_config ...
- 下位机多个".c, .h"文件的相互包含及排版
一.背景: 自从接触单片机编程以来,由于工作上的需要,不可避免的时常会接手别人的代码,但常常由于上一位同事的编码随意性有点大,导致可读性非常的差,有时候不得不完全舍弃原有代码,推倒重来,无形中增加了工 ...
- C语言中 *.c和*.h文件的区别!
C语言中 *.c和*.h文件的区别! http://blog.163.com/jiaoruijun07@126/blog/static/68943278201042064246409/ ...
- .c和.h文件的区别(转载)
一个简单的问题:.c和.h文件的区别学了几个月的C语言,反而觉得越来越不懂了.同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢? 2楼:子程序不要定义在 ...
- C语言中的宏展开
#include<stdio.h> #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { printf(,) ...
- 读书笔记-详解C程序开发中 .c和.h文件的区别
一个简单的问题:.c和.h文件的区别 学了几个月的C语言,反而觉得越来越不懂了.同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢? 2楼: 子程序不要定 ...
- C语言中.h和.c文件解析(很精彩)
C语言中.h和.c文件解析(很精彩) 简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析 ...
- C语言中.h和.c文件解析
整理自C语言中.h和.c文件解析(很精彩) Part.1(林锐<高质量C/C++编程>) 通过头文件来调用库功能.在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的 ...
随机推荐
- 常见Android面试题及答案(详细整理)
1. 请描述一下Activity 生命周期. 答: 如下图所示.共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onP ...
- protected private public 的区别
1.public,protected,private是Java里用来定义成员的访问权限的,另外还有一种是"default",也就是在成员前不加任何权限修饰符.如: publi ...
- golang RWMutex读写锁分析
RWMutex:是基于Mutex实现的读写互斥锁,一个goroutine可以持有多个读锁或者一个写锁,同一时刻只能持有读锁或者写锁 数据结构设计: type RWMutex struct { w Mu ...
- 最短路径之BF算法+线性规划(图片格式)
- 对于用div+css随心所欲布局的思考
在div+css取代Table成为主流的时代,学会用其进行随心所欲的布局是一个不可回避的技能.那么,重点掌握哪几个要点呢? 整体布局:从整体到局部的顺序进行布局,逐步定义div集css样式: 灵活运用 ...
- java对String进行sha1加密
1.使用apache的codec jar包对string进行加密,先下载并引入jar包: http://commons.apache.org/proper/commons-codec/ 2.生成: S ...
- 使用javascript解一道关于会议日程安排的面试题
这道面试题是从 HarrisonHao 的一篇博文中看到的:原文链接 我看到之后,感觉此题十分有趣,遂自己用 node.js 以不同的思路实现了一遍,实现中使用了 lodash 原题比较长,而且是英文 ...
- 使sublimetext3在ubuntu下可以打中文和在windows的dos命令行下正常显示中文
学习闲暇之余,总结一下在windows和ubuntu下使用sublimetext3遇到的问题 一.关于sublimetext3在windows的dos命令行下不能编译运行中文的解决方案: 因为dos命 ...
- MyBatis快速入门(一)
一.MyBatis背景介绍 MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的 ...
- SQLServer中间接实现函数索引或者Hash索引
本文出处:http://www.cnblogs.com/wy123/p/6617700.html SQLServer中没有函数索引,在某些场景下查询的时候要根据字段的某一部分做查询或者经过某种计算之后 ...