SGI stl_config
来源:互联网 发布:mac屏保显示时间 编辑:程序博客网 时间:2024/05/16 05:36
SGI版的stl库中在stl_config.h头文件中定义了里面所需要使用的所有的宏.提供对不同版本不同编译器的支持
根据编译器不同定义的宏
1. __STL_NO_BOOL
定义方式:
#if !defined(_BOOL)
#define __STL_NO_BOOL
在某些特定的编译器下会进行定义,如
# if defined(__SUNPRO_CC)
#define __STL_NO_BOOL
这个宏生效之后,通过下面这种方式定义出一个bool类型
# if defined(__STL_NO_BOOL) && !defined(__STL_DONT_USE_BOOL_TYPEDEF)
typedef int bool;
#define true 1
#define false 0
# endif
2. __STL_HAS_WCHAR_T
用来表示编译器是否支持宽字节.
__STL_NO_DRAND48
是否有drand488函数,根据编译器的不同进行定义__STL_STATIC_TEMPLATE_MEMBER_BUG
表示编译器在模板类中是否支持定义静态成员__STL_STATIC_CONST_INIT_BUG
表示类中的静态常量成员是否能在类中进行初始化
class Demo{ static const int num = 10;};
6.__STL_CLASS_PARTIAL_SPECIALIZATION
表示是否支持模板类的局部特化
7. __STL_PARTIAL_SPECIALIZATION_SYNTAX
是否支持类模板中的部分排序…
用模板函数来举例
template<typename T>void foo(T t){}template<typename T>void foo(T *t){}template<>void foo(int *t){}
在决定特化的int类型函数归属的时候,就会用到这个特性..根据该特性,它属于第二个模板函数
8.__STL_FUNCTION_TMPL_PARTIAL_ORDER
是否支持函数模板中的部分排序
9.__STL_MEMBER_TEMPLATES
是否支持模板类中定义模板函数
10.__STL_MEMBER_TEMPLATE_CLASSES
是否支持内部类为一个模板类
11.__STL_TEMPLATE_FRIENDS
一个模板类是否可以为其他类的友元
12.__STL_EXPLICIT_FUNCTION_TMPL_ARGS
是否支持函数对模板参数的推导
13.__STL_LIMITED_DEFAULT_TEMPLATES
前一个模板参数是否能为后一个模板参数的默认值
template<typename T, typename CON = std::vector<T> >
14.__STL_NON_TYPE_TMPL_PARAM_BUG
无类型的模板参数
template<int size>class Demo{};
15.__SGI_STL_NO_ARROW_OPERATOR
编译器是否支持迭代器中的operator->
16.__STL_DEFAULT_CONSTRUCTOR_BUG
是否支持 int(num)这种构造方式
17.__STL_USE_EXCEPTIONS
是否支持异常
18.__STL_USE_NAMESPACES
是否使用命名空间
19.__STL_NO_EXCEPTION_HEADER
是否有exception头文件
20.__STL_NO_BAD_ALLOC
是否有new头文件,,或者这个头文件中是否有bad_alloc class.
21.__STL_SGI_THREADS
__STL_WIN32THREADS
__STL_PTHREADS
__STL_UITHREADS
_STL_THREADS
__STL_VOLATILE
线程相关的宏
22.__STL_LONG_LONG
是否支持long long
23.__STL_USE_CONCEPT_CHECKS
进行编译时的安全检查
24.__STL_NO_USING_CLAUSE_IN_CLASS
类定义中是否支持使用using
25.__STL_NO_FRIEND_TEMPLATE_CLASS
编译器是否支持友元为一个模板类
26.__STL_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE
是否支持模板参数为一个函数指针
27.__STL_MEMBER_TEMPLATE_KEYWORD
是否支持template为模板的关键字
用户自定义的宏
1.__STL_USE_SGI_ALLOCATORS
如果定义了它,,将会使用旧的SGI的allocator.
2.__STL_NO_NAMESPACES
定义了它,,将不会将该stl库加入std这个名字空间中
3.__STL_NO_RELOPS_NAMESPACE
定义了它,,一些操作运算符(>, <=. >=, !=)就不会加入到std::rel_opsz中
4.__STL_ASSERTIONS
会通过assert进行运行时的检查
5._PTHREADS
_UITHREADS
_NOTHREADS
线程相关
6._STL_NO_CONCEPT_CHECKS
不进行错误检查
7.__STL_USE_NEW_IOSTREAMS
定义它,,会使用iosfwd,,否则使用iostream
- SGI stl_config
- sgi stl_config.h 各种宏的含义
- SGI STL :: Source Code Analysis :: stl_config.h
- stl_config.h
- 《STL源码剖析》-- stl_config.h
- 《STL源码剖析》 -- stl_config.h
- sgi allocate
- 《STL源码剖析》—— stl_config.h
- C++ STL源码剖析-- stl_config.h
- STL源码剖析 [配置文件](stl_config.h)
- SGI STL安装
- C# 解析 SGI 图形
- SGI STL内存池
- SGI(Silicon Graphics )
- SGI STL 安装
- sgi---1 vector
- sgi 之vector
- sgi的内存泄露
- vim操作文本编辑器
- JavaScript从入门到放弃 1
- 谈谈RTP传输中的负载类型和时间戳
- iOS NSKeyedArchiver序列化 存储数组对象
- Ubuntu Setup YCSB & MapKeeper to benchmark LevelDB
- SGI stl_config
- iOS 中的类属性
- 2017腾讯实习生笔试题简单练习——给定字符串,以十六进制和规定格式输出
- try报错,finally依然要运行
- eclipse提示:Eclipse is running in a JRE, but a JDK is required
- Android开发文件压缩与解压
- java中的>> 运算符
- Apache 实现ProxyPass转发URL到Tomcat并实现http自动转https
- MIT自然语言处理第五讲:最大熵和对数线性模型