如何在MFC中使用valarray?

sleepingboy 2003-02-22 03:04:50
一般C++类的头文件这样写,却报出一堆错

#pragma once
#include <valarray>

using namespace std;

class A
{
public:
A(void);
~A(void);

valarray<int> VA;
};
...全文
168 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fzr417 2010-06-15
解决方法

1)在包含头文件valarray时使用下面的格式
#undef min
#undef max
include <valarray>
using namespace std;

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")
回复
.net我没有使用过,但是我想你用的是中文版吧,有时有可能是汉化时出了问题的,我用vc6。0中文版时,有时也出现许多恶心的问题,但是用英文版就基本上没有什么问题的。
像编译器只类的还是用英文版的比较好的。
回复
smile121 2003-07-05
楼主好,我遇到了相同的情况,问题解决了吗?
回复
sleepingboy 2003-02-23
只要是windows程序就不能用valarray

如何解决?
回复
sleepingboy 2003-02-22
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(309) : warning C4003: “min”宏的实参不足
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(318) : warning C4003: “max”宏的实参不足
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(309) : error C2059: 语法错误 : “函数样式转换”
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(420) : 参见对正在编译的类模板实例化“std::valarray<_Ty>”的引用
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(309) : error C2334: “:”的前面有意外标记;跳过明显的函数体
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2143: 语法错误 : 缺少“)”(在“}”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2143: 语法错误 : 缺少“}”(在“)”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2059: 语法错误 : “)”
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2238: 意外的标记位于“;”之前
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(318) : error C2146: 语法错误 : 缺少“;”(在标识符“_Ty”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(309) : error C2629: 意外的“size_t (”
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(1118) : 参见对正在编译的类模板实例化“std::valarray<_Ty>”的引用
with
[
_Ty=size_t
]
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(309) : error C2334: “:”的前面有意外标记;跳过明显的函数体
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2143: 语法错误 : 缺少“)”(在“}”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2143: 语法错误 : 缺少“}”(在“)”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2059: 语法错误 : “)”
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(318) : error C2334: “:”的前面有意外标记;跳过明显的函数体
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(325) : error C2143: 语法错误 : 缺少“)”(在“}”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(325) : error C2143: 语法错误 : 缺少“}”(在“)”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(325) : error C2059: 语法错误 : “)”
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(325) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(325) : error C2238: 意外的标记位于“;”之前
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(327) : error C2146: 语法错误 : 缺少“;”(在标识符“valarray”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(309) : error C2629: 意外的“std::_Bool (”
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(1327) : 参见对正在编译的类模板实例化“std::valarray<_Ty>”的引用
with
[
_Ty=std::_Bool
]
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(1329) : 参见对正在编译的类模板实例化“std::mask_array<_Ty>”的引用
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(309) : error C2334: “:”的前面有意外标记;跳过明显的函数体
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2143: 语法错误 : 缺少“)”(在“}”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2143: 语法错误 : 缺少“}”(在“)”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2059: 语法错误 : “)”
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2238: 意外的标记位于“;”之前
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(318) : error C2146: 语法错误 : 缺少“;”(在标识符“_Ty”的前面)
RSTable.cpp
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(309) : warning C4003: “min”宏的实参不足
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(318) : warning C4003: “max”宏的实参不足
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(309) : error C2059: 语法错误 : “函数样式转换”
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(420) : 参见对正在编译的类模板实例化“std::valarray<_Ty>”的引用
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(309) : error C2334: “:”的前面有意外标记;跳过明显的函数体
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2143: 语法错误 : 缺少“)”(在“}”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2143: 语法错误 : 缺少“}”(在“)”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2059: 语法错误 : “)”
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2238: 意外的标记位于“;”之前
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(318) : error C2146: 语法错误 : 缺少“;”(在标识符“_Ty”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(309) : error C2629: 意外的“size_t (”
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(1118) : 参见对正在编译的类模板实例化“std::valarray<_Ty>”的引用
with
[
_Ty=size_t
]
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(309) : error C2334: “:”的前面有意外标记;跳过明显的函数体
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2143: 语法错误 : 缺少“)”(在“}”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2143: 语法错误 : 缺少“}”(在“)”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(316) : error C2059: 语法错误 : “)”
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(318) : error C2334: “:”的前面有意外标记;跳过明显的函数体
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(325) : error C2143: 语法错误 : 缺少“)”(在“}”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(325) : error C2143: 语法错误 : 缺少“}”(在“)”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(325) : error C2059: 语法错误 : “)”
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(325) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(325) : error C2238: 意外的标记位于“;”之前
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(327) : error C2146: 语法错误 : 缺少“;”(在标识符“valarray”的前面)
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(309) : error C2629: 意外的“std::_Bool (”
f:\Microsoft Visual Studio .NET\Vc7\include\valarray(1327) : 参见对正在编译的类模板实例化“std::valarray<_Ty>”的引用
with
[
_Ty=std::_Bool
]
f:\Microsoft Visual Studio .NET\Vc7\include\valarray)
回复
sleepingboy 2003-02-22
明白了

又是vc.net的bug
回复
qhgary 2003-02-22
没有问题,我试过了,我这里通过vc6
回复
晨曦2003 2003-02-22
出错信息呢?
还有源代码?
回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告