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

Patricia Arquette
Lepaskan: 2024-11-14 17:18:02
asal
258 orang telah melayarinya

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>
Salin selepas log masuk

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 : '::'
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan