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

cro*_*bar 10 c++ std max min

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

error: 'min' is not a member of 'std'
Run Code Online (Sandbox Code Playgroud)

这与以下代码行有关:

L.Precision=std::min(1.e-4,0.001*res);
Run Code Online (Sandbox Code Playgroud)

L.Precision是一个double,res是一个double.以前这一行是:

L.Precision=min(1.e-4,0.001*res);
Run Code Online (Sandbox Code Playgroud)

但是这给出了错误:

error: 'min' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

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

#include<stdio.h>
#include<math.h>
//#include<algorithm.h>
#include <malloc.h>
#include "complex.h"
#include "mesh.h"
#include "spars.h"
#include "FemmeDocCore.h"
Run Code Online (Sandbox Code Playgroud)

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

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

rub*_*nvb 22

您应该取消注释并修复#include <algorithm>(没有.h)std::min声明的位置.

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

另外:使用<cmath><cstdio>,避免malloc和朋友一起使用new/ new[]delete/ delete[].

  • @crobar:嗯,没错,只是不合适.如果它没有坏掉,请不要修理它.特别是如果它不是你自己的代码. (2认同)