Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menyelesaikan Perlanggaran Makro Windows.h Max dengan std::numeric_limits::max()?

Bagaimana untuk Menyelesaikan Perlanggaran Makro Windows.h Max dengan std::numeric_limits::max()?

DDD
Lepaskan: 2024-11-11 12:59:03
asal
718 orang telah melayarinya

How to Resolve the Windows.h Max Macro Collision with 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::max().

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

Dengan mentakrifkan NOMINMAX, anda dengan berkesan melumpuhkan takrifan min dan maks yang bercanggah dalam Windows.h, membenarkan penggunaan std:: numeric_limits::max() makro tanpa pengubahsuaian atau undefining. Penyelesaian ini menghapuskan keperluan untuk penyelesaian yang buruk dan memastikan penyepaduan yang lancar dengan perpustakaan standard C.

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan