我正在尝试将一些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[].