13

我正在尝试仅使用标准库将一些 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.Precision是一个double,并且res是一个double。以前这条线是:

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 添加。我希望最终代码是跨平台的。

4

1 回答 1

25

您应该取消注释并修复#include <algorithm>, (不带 .h),这std::min是声明的位置。

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

另外:使用<cmath>and <cstdio>,避免malloc和朋友,使用new/new[]delete/delete[]代替。

于 2011-07-04T10:22:04.417 回答