Ошибка MinGW: 'min' не является членом 'std' - PullRequest
10 голосов
/ 04 июля 2011

Я пытаюсь преобразовать некоторый код VC ++ 6 в консольное приложение, используя только стандартные библиотеки, но получаю следующую ошибку от MinGW (независимо от версии, поставляемой с IDE Code :: Blocks 10.05):

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.Я хочу, чтобы окончательный код был кроссплатформенным.

1 Ответ

22 голосов
/ 04 июля 2011

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

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

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

...