Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menyelesaikan Perlanggaran Makro antara Windows.h dan Pustaka Standard C?

Bagaimana untuk Menyelesaikan Perlanggaran Makro antara Windows.h dan Pustaka Standard C?

Susan Sarandon
Lepaskan: 2024-11-17 04:42:03
asal
286 orang telah melayarinya

How to Resolve Macro Collisions between Windows.h and the C   Standard Library?

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

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!

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