min()/max() 호출이 포함된 코드에서 이상한 C++ 오류 발생

StackOverflow https://stackoverflow.com/questions/14165

  •  08-06-2019
  •  | 
  •  

문제

C++ 코드에 min() 또는 max() 호출이 있을 때 이상한 오류가 나타납니다.저는 Visual C++ 컴파일러를 사용하고 있습니다.

도움이 되었습니까?

해결책

코드에 다음이 포함되어 있는지 확인하세요. windows.h 헤더 파일과 코드 또는 기타 타사 헤더에는 고유한 헤더가 있습니다. 분()/최대() 정의.그렇다면 앞에 추가하십시오. windows.h 정의에 포함 NOMINMAX 이와 같이:

#define NOMINMAX
#include <windows.h>

다른 팁

또 다른 가능성은 부작용 때문일 수 있습니다.대부분의 최소/최대 매크로에는 매개변수가 여러 번 포함되므로 예상한 대로 작동하지 않을 수 있습니다.오류와 경고도 생성될 수 있습니다.

max(a,i++) expands as ((a) > (i++) ? (a) : (i++))

그 후 나는 플러스 1이거나 플러스 2이다

확장의 ()는 수식으로 호출할 경우 문제를 피하기 위한 것입니다.max(a,b+c)를 확장해 보세요.

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))
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top