Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menyelesaikan Perlanggaran Makro Windows.h Max dengan std::numeric_limits::max()?
Windows.h Max Macro Collision with Std: A Solution
Apabila membangun dengan C , konflik antara definisi perpustakaan standard dan yang terdapat dalam Pengepala Windows.h boleh timbul. Perlanggaran ini boleh menjejaskan penggunaan makro maksimum.
Secara khusus, coretan kod yang disediakan cuba untuk mengendalikan input pengguna yang tidak sah daripada cin menggunakan makro maksimum. Walau bagaimanapun, pada Windows, makro maks daripada Windows.h bercanggah dengan std::numeric_limits
Untuk menyelesaikan isu ini, pendekatan yang lebih bersih dan elegan adalah dengan menyekat definisi min dan maks dalam Windef.h. Ini boleh dicapai dengan mentakrifkan makro NOMINMAX sebelum menyertakan Windows.h.
#define NOMINMAX #include <Windows.h> // includes WinDef.h which defines min() max() do { if(cin.fail()) { cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } cout << "Enter number of seconds between submissions: "; } while(!(cin >> delay) || delay == 0);
Dengan mentakrifkan NOMINMAX, anda dengan berkesan melumpuhkan takrifan min dan maks yang bercanggah dalam Windows.h, membenarkan penggunaan std:: numeric_limits
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Perlanggaran Makro Windows.h Max dengan std::numeric_limits::max()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!