문제
C++ 코드에 min() 또는 max() 호출이 있을 때 이상한 오류가 나타납니다.저는 Visual C++ 컴파일러를 사용하고 있습니다.
해결책
코드에 다음이 포함되어 있는지 확인하세요. windows.h 헤더 파일과 코드 또는 기타 타사 헤더에는 고유한 헤더가 있습니다. 분()/최대() 정의.그렇다면 앞에 추가하십시오. windows.h 정의에 포함 NOMINMAX 이와 같이:
#define NOMINMAX
#include <windows.h>
다른 팁
또 다른 가능성은 부작용 때문일 수 있습니다.대부분의 최소/최대 매크로에는 매개변수가 여러 번 포함되므로 예상한 대로 작동하지 않을 수 있습니다.오류와 경고도 생성될 수 있습니다.
max(a,i++) expands as ((a) > (i++) ? (a) : (i++))확장의 ()는 수식으로 호출할 경우 문제를 피하기 위한 것입니다.max(a,b+c)를 확장해 보세요.그 후 나는 플러스 1이거나 플러스 2이다
Windows에서는 이를 함수 스타일 매크로로 정의하므로 다음 해결 방법을 사용할 수 있습니다.
int i = std::min<int>(3,5);
이것은 매크로가 작동하기 때문에 작동합니다. min()
경우에만 확장됩니다. min
다음은 (
, 다음에 올 때는 그렇지 않습니다. <
.
윽...범위를 좁혀, 친구: std::min()
, std::max()
.
나는 그것을 몇 년 동안 사용하지 않았지만 메모리 부스트를 통해 최소값과 최대값도 할당할 수 있습니까?
솔직히 최소/최대에 관해서는 직접 정의하는 것이 가장 좋습니다.
#define min(a,b) ((a) < (b) ? (a) : (b))
#define max(a,b) ((a) >= (b) ? (a) : (b))
제휴하지 않습니다 StackOverflow