sgistl_config.h各种宏的含义
来源:优易学  2011-12-15 12:08:52   【优易学:中国教育考试门户网】   资料下载   IT书店
  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 <>,否则为空宏。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训