Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat Ralat Semasa Menggunakan std::min/max dengan #define NOMINMAX?

Mengapa Saya Mendapat Ralat Semasa Menggunakan std::min/max dengan #define NOMINMAX?

Patricia Arquette
Patricia Arquetteasal
2024-11-14 17:18:02338semak imbas

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

Menggunakan std::min/max dengan #define NOMINMAX

Dalam kemas kini terbaru pada fail main.cpp anda, anda memperkenalkan arahan prapemproses berikut:

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

Tindakan ini membolehkan anda menggunakan fungsi std::max dan std::min dalam kod anda. Walau bagaimanapun, percubaan berikutnya untuk menggunakan fungsi ini dalam fail lain menghasilkan ralat seperti:

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

Walaupun percubaan untuk mentakrifkan NOMINMAX dalam fail tambahan ini, isu ini berterusan.

Isunya terletak pada fakta bahawa NOMINMAX mentakrifkan alias untuk Windows min dan makro maks, menggantikan versi C standard yang disediakan oleh . Untuk menyelesaikan masalah ini, gunakan tanda kurung di sekeliling panggilan std::min dan std::max:

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

Pendekatan ini mengelak daripada menggunakan makro seperti fungsi, membenarkan versi C standard digunakan.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat Semasa Menggunakan std::min/max dengan #define NOMINMAX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn