爱问知识人 爱问教育 医院库

如何解决在 Windows 程序中使用了 C 标准库文件 ( STL ) 后出现的问题?

首页

如何解决在 Windows 程序中使用了 C++ 标准库文件 ( STL ) 后出现的问题?

如何解决在 Windows 程序中使用了 C++ 标准库文件 ( STL ) 后出现的问题?

提交回答
好评回答
  • 2018-02-14 10:25:40
      在  Windows  的程序设计中,使用了标准库  (  STL  )  后就产生了很多语法错误,可想而知它们两者之间有冲突。原因就在于一方面  min  和  max  宏在  Windef。h  定义成:  
     
         #ifndef  NOMINMAX  
         #ifndef  max  
         #define  max(a,b)    (((a)  >  (b))  ?  (a)  :  (b))  
         #endif  
     
         #ifndef  min  
         #define  min(a,b)    (((a)    
         inline  const  T&  min(const  T&  a,  const  T&  b)  {  
                 return  b    
         inline  const  T&  min(const  T&  a,  const  T&  b,  Compare  comp)  {  
                 return  comp(b,  a)  ?  b  :  a;  
         }  
         template    
         inline  const  T&  max(const  T&  a,  const  T&  b)  {  
                 return    a    
         inline  const  T&  max(const  T&  a,  const  T&  b,  Compare  comp)  {  
                 return  comp(a,  b)  ?  b  :  a;  
         }  
     
    已经在  Windef。
      h 中定义成了一个宏,同样名称的函数又在 STL 中被定义了,由此可知,当你同时包含了 Windef。h( 或者 Windows。h ) 和 Algobase。h ( 来自 STL ) 时,就会产生语法错误。所以,我们要屏蔽去掉其中的一个定义。
       --------------------------------------------------------------- 下面的做法是用 NOMINMAX 来屏蔽掉 Windef。h 中的 min 和 max 。
       在 Visual C++ 中使用菜单 Project -> Settings 在 C/C++ tab 页的 Preprocessor definitions 文本编辑框,把 NOMINMAX 添加到其中,然后使用菜单 Build->Rebuild All重新编译所有文件。
       。

    1***

    2018-02-14 10:25:40

类似问题

换一换
  • VC++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):