zoukankan      html  css  js  c++  java
  • vc 7.1中使用valarray时的技巧


    今天使用何渝写的《计算机常用数值算法与程序》中的配套代码的时候,发现在自己程序中include <valarray>头文件的时候会出现奇怪的error: Microsoft Visual Studio .NET 2003Vc7includevalarray(321): error C2059: syntax error : ')'。

    环境:windowsXP+vc.net 2003
    使用 何渝 编著的《计算机常用数值算法与程序》(C++版) 人民邮电出版社 中的源代码
    因其里面包含了头文件valarray:
    #include   <valarray>     
    using   namespace   std;

    使用vc6编译时没有错误,但是在使用vc.net2003编译时碰到如下等一系列的错误:

    error C2059: 语法错误 : “)”   参见对正在编译的类模板实例化“std::valarray<_Ty>”的引用   
    error C2334: “:”的前面有意外标记;跳过明显的函数体                  
    error C2143: 语法错误 : 缺少“)”(在“}”的前面)                      
    error C2238: 意外的标记位于“;”之前                                  
    error C2146: 语法错误 : 缺少“;”(在标识符“_Ty”的前面) 
    ……………………
    ……………………

    上网查了查,有人说这是vc.net的一个bug;
    也有人说这是   MFC<valarray>有冲突,一加入#include <valarray>就会报和上面相似的错误;
    有人建议如下:”.net我没有使用过,但是我想你用的是中文版吧,有时有可能是汉化时出了问题的,我用vc6。0中文版时,有时也出现许多恶心的问题,但是用英文版就基本上没有什么问题的。 像编译器之类的还是用英文版的比较好的。“ 

    还是有些高人给出了解决办法:
    1)在包含头文件valarray时使用下面的格式
    #undef   min  
    #undef   max  
    include   <valarray>
    using namespace std;

    2)  如果要保留min,max宏,前后夹击  
      #pragma   push_macro("min")  
      #pragma   push_macro("max")  
      #undef   min  
      #undef   max  
      #include   <valarray>  
      using namespace std;
      #pragma   pop_macro("min")  
      #pragma   pop_macro("max")

    本人试了试,果然有效。

  • 相关阅读:
    小程序 视频
    b161: NOIP2007 4.Hanoi双塔问题
    命名规则、.gitignore、freopen()
    c++学习记录(九)
    c++学习笔记(八)
    2020面向对象程序设计寒假作业2
    c++学习记录(七)
    c++学习记录(六)
    c+学习记录(五)
    c++学习记录(四)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318747.html
Copyright © 2011-2022 走看看