Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menyelesaikan Perlanggaran Makro antara Windows.h dan Pustaka Standard C?
Mengendalikan Perlanggaran Makro dalam Windows.h dan std
Apabila bekerja dengan Windows API dan perpustakaan standard C, anda mungkin menghadapi konflik antara makro takrifan, seperti maks. Ini boleh berlaku jika Windows.h disertakan, yang mentakrifkan max(), dan seterusnya pustaka standard C disertakan, yang juga mentakrifkan max().
Satu penyelesaian ialah mentakrifkan semula makro yang bercanggah, seperti yang dicadangkan dalam coretan kod yang anda berikan (#undef max). Walau bagaimanapun, ini boleh menyusahkan dan terdedah kepada kesilapan. Penyelesaian yang lebih baik adalah untuk menyekat definisi max() dan makro yang berkaitan dalam Windows.h. Ini boleh dicapai dengan mentakrifkan makro prapemproses NOMINMAX.
#define NOMINMAX #include <Windows.h> #include <iostream> using std::cin; using std::cout; void Foo() { int delay = 0; 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 sebelum memasukkan Windows.h, takrifan makro untuk max(), min(), dan lain-lain ditindas, membenarkan standard C versi perpustakaan makro ini untuk digunakan tanpa konflik.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Perlanggaran Makro antara Windows.h dan Pustaka Standard C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!