>

최근에 추가 한 항목 :

#define NOMINMAX
#include <Windows.h>
#include <algorithm>

사용하기 위해 main.cpp에

std::max( x , x ); // x is just a placeholder and not actual anything
std::min( x  , x );

하지만 std::max()/std::min() 를 사용할 수 없습니다  다른 파일에서.

error C2589: '(' : illegal token on right side of '::'
error C2059: syntax error : '::'

#define NOMINMAX 를 추가하려고했습니다.  내 다른 파일에 있지만 실패합니다. 실마리는 무엇입니까?

요청하기 전에 둘러 보았지만 답변을 이해하지 못합니다 Visual C ++에서 NOMINMAX 관련 문제

  • 답변 # 1

    실제로 필사적이라면 함수 이름을 괄호로 묶으십시오 :

    (std::min)(x, y);
    
    

    이 구문은 함수형 매크로를 적용하지 않습니다. (공식적으로 함수형 매크로를 적용하려면 매크로 이름 뒤에 선택적 공백과 '(')이 와야합니다.

  • 답변 # 2

    NOMINMAX 정의  컴파일러 플래그를 통해 :

    > cl.exe -DNOMINMAX ...
    
    

    이 모든 소스 파일에 대해 정의됩니다. IDE를 사용하지 않지만이 페이지는 IDE 탐색 방법에 대한 지침을 제공합니다. Windows 프로그램에서 STL을 사용하면 최소/최대 충돌이 발생할 수 있습니다 :

    와이즈 비즈

  • 답변 # 3

    NOTLMAX를 정의하면 STL 버전을 선호하므로 최소/최대 매크로를 사용하는 gdiplus.h를 포함하는 동안 문제가 발생할 수 있습니다. 솔루션으로 STL 헤더를 포함하고 "strong 네임 스페이스 std 사용"이전을 사용하여 gdiplus.h를 포함해야합니다.

    예 :

    Simply define the NOMINMAX preprocessor symbol. This can be done in the Developer Studio project under Build, Settings, on the C/C++ tab, in the Preprocessor category. This will suppress the min and max definitions in Windef.h.

  • 답변 # 4

    문제는 당신이 #define NOMINMAX // Include C++ headers #include <algorithm> using namespace std; // Include Windows headers #include <windows.h> #include <gdiplus.h> 일 가능성이 높습니다  당신이 #define NOMINMAX 후 . #include "windows.h" 가 중요합니다  먼저 오세요

    그 이유는 windows.h (실제로 windows.h에 포함 된 windef.h라고 생각합니다)는 다음과 같은 코드를 가지고 있기 때문입니다 :

    #define
    
    

    그래서 #ifndef NOMINMAX #define min(x,y) ((x) < (y) ? (x) : (y)) #define max(x,y) ((x) > (y) ? (x) : (y)) #endif  컴파일러 (또는 실제로 전 처리기)에게 #define NOMINMAX 의 정의를 건너 뛰라고 지시합니다.  그리고 min 하지만 max 전에하기 만하면 적용됩니다. .

    #include "windows.h"

  • 이전 javascript : iframe이 자바 스크립트에서로드 될 때까지 기다리십시오
  • 다음 오류 Python 36, WIN10, pycrpto 설치 오류