Ошибка MinGW: "мин" не является членом "std"

Я пытаюсь преобразовать некоторый код VС++ 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, но исправьте меня, если я ошибаюсь в этом.

Что именно я могу сделать по этому поводу? Я относительно новичок в С++, и даже не уверен, где вызывается windef.h, я предполагаю, что это просто необходимо для каждой программы Windows и в какой-то момент добавляется MinGW. Я хочу, чтобы конечный код был кросс-платформенным.

Ответ 1

Вы должны раскомментировать и исправить #include <algorithm>, (без .h), где объявляется std::min.

Это не имеет ничего общего с MinGW или GCC или Windows, это стандартный материал на С++. Если вы ударите любые другие ошибки, подобные этому, найдите отсутствующий идентификатор на http://en.cppreference.com/w/.

Также: используйте <cmath> и <cstdio> и избегайте malloc и друзей, вместо этого используйте new/new[] и delete/delete[].