"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > #define NOMINMAX와 함께 std::min/max를 사용할 때 오류가 발생하는 이유는 무엇입니까?

#define NOMINMAX와 함께 std::min/max를 사용할 때 오류가 발생하는 이유는 무엇입니까?

2024년 12월 22일에 게시됨
검색:454

Why Do I Get Errors When Using std::min/max with #define NOMINMAX?

#define NOMINMAX와 함께 std::min/max 사용

main.cpp 파일에 대한 최근 업데이트에서 다음 전처리기 지시문을 도입했습니다.

#define NOMINMAX
#include 
#include 

이 작업을 통해 코드 내에서 std::max 및 std::min 함수를 활용할 수 있습니다. 그러나 이후에 다른 파일 내에서 이러한 기능을 사용하려고 시도하면 다음과 같은 오류가 발생합니다.

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

이러한 추가 파일에서 NOMINMAX를 정의하려고 시도했지만 문제가 지속됩니다.

문제는 NOMINMAX가 Windows min에 대한 별칭을 정의한다는 사실에 있습니다. 및 max 매크로는 에서 제공하는 표준 C 버전을 덮어씁니다. 이 문제를 해결하려면 std::min 및 std::max 호출 주위에 괄호를 사용하십시오.

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

이 접근 방식은 함수 호출을 방지합니다. 매크로와 마찬가지로 표준 C 버전을 적용할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3