MinGW错误:'min'不是'std'的成员

时间:2011-07-04 10:20:12

标签: c++ max std min

我正在尝试将一些VC ++ 6代码转换为仅使用标准库的控制台应用程序,但是我从MinGW获得了以下错误(Code :: Blocks 10.05 IDE提供的任何版本):

error: 'min' is not a member of 'std'

这与以下代码行有关:

L.Precision=std::min(1.e-4,0.001*res);

L.Precisiondoubleresdouble。以前这一行是:

L.Precision=min(1.e-4,0.001*res);

但这会产生错误:

error: 'min' was not declared in this scope

以下是相关文件中的标题:

#include<stdio.h>
#include<math.h>
//#include<algorithm.h>
#include <malloc.h>
#include "complex.h"
#include "mesh.h"
#include "spars.h"
#include "FemmeDocCore.h"

我知道这可能与文件windef.h中定义的某些宏有关,但如果我错了,请纠正我。

我到底能做些什么?我对C ++比较陌生,我甚至不确定调用windef.h的位置,我认为这只是每个Windows程序所需要的,并且在某些时候由MinGW添加。我希望最终的代码是跨平台的。

1 个答案:

答案 0 :(得分:22)

你应该取消注释并修复#include <algorithm>,(没有.h),这是声明std::min的地方。

这与MinGW或GCC或Windows完全无关,这是标准的C ++内容。如果您遇到此类任何其他错误,请在http://en.cppreference.com/w/上搜索缺少的标识符。

另外:使用<cmath><cstdio>,并避开malloc和朋友,使用new / new[]delete / {{1相反。