Rumah > Artikel > pembangunan bahagian belakang > Mengapa NOMINMAX tidak berfungsi dalam fail lain apabila menggunakan std::min dan std::max?
NOMINMAX dan std::min/max Collision
Untuk mendayakan penggunaan fungsi std::min dan std::max perpustakaan standard, anda telah menentukan makro NOMINMAX dalam fail main.cpp anda. Walau bagaimanapun, anda menghadapi masalah menggunakan fungsi ini dalam fail lain.
NOMINMAX ditakrifkan untuk melumpuhkan takrifan lama tertentu dalam fail pengepala Windows, termasuk definisi semula min dan maks sebagai makro. Ini kerana dalam versi terdahulu pengkompil Visual C, makro ini ditakrifkan oleh fail pengepala Windows dan boleh bercanggah dengan takrifan perpustakaan standard.
Untuk menyelesaikan isu ini, anda perlu memastikan NOMINMAX ditakrifkan dalam semua fail yang anda ingin gunakan std::min atau std::max. Walau bagaimanapun, hanya menambah definisi makro pada fail anda yang lain nampaknya tidak berfungsi.
Ini kerana arahan #define mempunyai skop global dan mempengaruhi semua kod berikutnya dalam fail. Walau bagaimanapun, makro tidak digunakan pada kod yang telah dipraproses. Oleh itu, takrifan NOMINMAX dalam fail anda yang kemudian mungkin tidak mempunyai kesan pada kod yang telah anda tulis.
Untuk menyelesaikan isu ini, anda boleh menyertakan nama fungsi dengan kurungan:
(std::min)(x, y);
Sintaks ini akan memastikan bahawa makro seperti fungsi tidak digunakan dan pengkompil akan menyelesaikan panggilan fungsi ke std::min.
Atas ialah kandungan terperinci Mengapa NOMINMAX tidak berfungsi dalam fail lain apabila menggunakan std::min dan std::max?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!