[转载]vc 7.1中使用valarray时的技巧

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

在网上搜索了一下,发现了一个解决办法,特意记录在这里给大家分享,原文地址:http://dawningofchanges.blogchina.com/viewdiary.14010421.html

环境: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")

本人试了试,果然有效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值