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")

    本人试了试,果然有效。

  • 相关阅读:
    hdu 母牛的故事 递推题
    并查集
    又是矩阵 Uva上的一道 经典题目
    poj 3233 矩阵幂取模
    electronvue + elementui构建桌面应用
    主板cmos 映射表
    高级配置与电源接口 acpi 简介
    警告不能读取 AppletViewer 属性文件的解决方法
    高级 Synth(转载)
    vbs 查看硬件信息代码
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318747.html
Copyright © 2011-2022 走看看