我正在尝试将一些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添加。我希望最终的代码是跨平台的。
答案 0 :(得分:22)
你应该取消注释并修复#include <algorithm>
,(没有.h),这是声明std::min
的地方。
这与MinGW或GCC或Windows完全无关,这是标准的C ++内容。如果您遇到此类任何其他错误,请在http://en.cppreference.com/w/上搜索缺少的标识符。
另外:使用<cmath>
和<cstdio>
,并避开malloc
和朋友,使用new
/ new[]
和delete
/ {{1相反。