sgi stl_config.h 各种宏的含义

stl_config.h  
  由于不同的编译环境对标准C++的支持不完全相同,出于移植性的考虑,SGI   STL定义了这个文件。它通过条件编译针对不同的编译器作了部分常数设定,对编译器的设定如下:  
  1)   如果没有定义bool,true,false,定义   __STL_NEED_BOOL。  
  2)   如果不支持drand48(采用了48bit计算,产生双精度的伪随机数),定义   __STL_NO_DRAND48。  
  3)   如果不支持类模板的静态成员,定义   __STL_STATIC_TEMPLATE_MEMBER_BUG。  
  4)   如果不支持关键字typename,定义typename为一个空宏(null   macro)。  
  5)   如果支持类模板局部特殊化(partial   specialization   of   class   templates),定义   __STL_CLASS_PARTIAL_SPECIALIZATION。  
  6)   如果支持函数模板局部特殊化(partial   specialization   of   function   templates),定义   Defines   __STL_FUNCTION_TMPL_PARTIAL_ORDER。  
  7)   如果函数模板可以指明参数类型,定义   __STL_EXPLICIT_FUNCTION_TMPL_ARGS(SGI   STL中未使用)。  
  8)   如果类中可定义函数模板为成员,定义   __STL_MEMBER_TEMPLATES。  
  9)   如果不支持关键字explicit,定义explicit为为一个空宏。  
  10)   如果不能根据前一个模板参数设定后一个模板参数,定义   __STL_LIMITED_DEFAULT_TEMPLATES。  
  11)   如果对无类型模板参数(non-type   template   parameters)执行函数模板的参数推导出错,定义   __STL_NON_TYPE_TMPL_PARAM_BUG。  
  12)   如果不支持iterators的->操作符,定义   __SGI_STL_NO_ARROW_OPERATOR。  
  13)   如果支持异常处理(exceptions),定义   __STL_USE_EXCEPTIONS。    
  14)   如果把STL放在一个namespace中,定义   __STL_USE_NAMESPACES。  
  15)   如果使用SGI编译,没有选择pthreads或其他threads,定义   __STL_SGI_THREADS。    
  16)   如果使用WIN32的多线程模式(multithreaded   mode)编译,定义   __STL_WIN32THREADS。  
  17)   适当定义namespace相关宏(__STD,   __STL_BEGIN_NAMESPACE,   等)。  
  18)   适当定义exception相关宏   (__STL_TRY,   __STL_UNWIND,   等)。  
  19)   如果没有定义__STL_ASSERTIONS,定义__stl_assert为一个空宏。  
  20)   如果定义__STL_EXPLICIT_FUNCTION_IMPL_ARGS,定义__STL_NULL_TMPL_ARGS为<>,否则为空宏。  
  21)   如果定义__STL_CLASS_PARTIAL_SPECIALIZATION,定义__STL_TEMPLATE_NULL为template   <>,否则为空宏。  

你可能感兴趣的:(sgi stl_config.h 各种宏的含义)