C++/WinRT konfigurációs makrók

Ez a témakör a C++/WinRT konfigurációs makrókat ismerteti. Ha másként nem jelezzük, ezek a szabályok az összes C++/WinRT konfigurációs makróra vonatkoznak:

  • Minden olyan fájlnak azonos makróbeállításokkal kell rendelkeznie, amelyek egyetlen modul (.exe vagy .dll) létrehozásához vannak összekapcsolva. Ez magában foglalja a statikus kódtárakat is.
  • A C++/WinRT fejlécfájl felvétele előtt minden makróbeállításnak be kell fejeződnie.
  • A C++/WinRT fejlécfájl felvétele után nem módosíthatja a makróbeállításokat.

WINRT_LEAN_AND_MEAN

Ha meg van adva, letiltja ezeket a ritkán használt funkciókat (a fordítási idő csökkentése érdekében):

  • Az összetevőn kívüli kizárólagos interfészek implementálása.
  • std::hash specializációi interfész- és futásidejűosztály-intelligens mutatókhoz.
  • A 2.0.221101.3-as verzió óta támogatja a Hstringing vagy az IStringable közvetlen kimenetét egy C++ streamen.

Összevonhat különböző WINRT_LEAN_AND_MEAN-beállításokkal rendelkező fájlokat.

Azok a fájlok, amelyek nem definiálják WINRT_LEAN_AND_MEAN hozzáférést kapnak a ritkán használt funkciókhoz.

WINRT_NO_MODULE_LOCK

Ha meg van adva, letiltja az aktuális modul objektumainak számát. A modul soha nem kerül eltávolításra a folyamatból. Szokás definiálni ezt a makrót a végrehajtható programokhoz (amelyek soha nem tölthetők ki a memóriából), illetve azokhoz a .dll-okhoz, amelyeket rögzítve kíván hagyni. Nem kombinálható a(z) WINRT_CUSTOM_MODULE_LOCK elemmel.

WINRT_CUSTOM_MODULE_LOCK

Ha meg van adva, lehetővé teszi a winrt::get_module_lock saját implementációjának biztosítását. Nem használható együtt a(z) WINRT_NO_MODULE_LOCK elemmel.

A winrt::get_module_lock egyéni implementációjának támogatnia kell a következő műveleteket:

  • ++winrt::get_module_lock(): Növelje a modulzár hivatkozásainak számát.
  • --winrt::get_module_lock(): Csökkentse a modulzár hivatkozásszámát.
  • if (winrt::get_module_lock()): Ellenőrizze, hogy a referenciaszámláló nem nulla-e. (DLL létrehozása esetén szükséges.)

WINRT_ASSERT, WINRT_VERIFY

Ezek a makrók lehetővé teszik az assertkezelés testreszabását. WINRT_ASSERT nincs szükség az argumentum kiértékelésére. WINRT_VERIFY megköveteli az argumentum kiértékelését, még a nem hibakeresési buildekben is.

Ha nem szabja testre ezeket a makrókat, és _DEBUG van definiálva, akkor a C++/WinRT a _ASSERTE egyenértékűvé teszi őket.

Ha nem szabja testre ezeket a makrókat, és nincs definiálva a _DEBUG, akkor a C++/WinRT úgy definiálja a WINRT_ASSERT makrót, hogy a kifejezést kiértékelés nélkül eldobja, a WINRT_VERIFY makrót pedig úgy, hogy a kifejezést a kiértékelése után dobja el.

WINRT_NO_MAKE_DETECTION

Ha meg van adva, letiltja az alapértelmezett C++/WinRT diagnosztikát, amely azt észleli, hogy tévedésből létrehozott egy implementációs osztályt a winrt::make használata nélkül.

Határozottan javasoljuk, hogy ne definiálja ezt a szimbólumot, mert ezzel elfedi a programozási hibák gyakori forrását.

WINRT_NO_SOURCE_LOCATION

Ha meg van határozva, letiltja a forrásfájl- és sorinformációk (hibakeresési buildek esetén a függvényinformációk) belefoglalását a hibák létrehozásakor.

Ezt a további információt a C++/WinRT nem használja, de más olyan kódtárak számára is elérhetővé teszi, amelyek C++/WinRT-kivételekkel szeretnének együttműködni, például a Windows implementációs kódtárban.

Alapértelmezés szerint az információk C++20 vagy újabb módban történő fordításkor jelennek meg. Előfordulhat, hogy a bináris méret csökkentése érdekében el szeretné tiltani ezeket az információkat.

WINRT_DIAGNOSTICS

Ha meg van adva, lehetővé teszi a belső statisztikák számára a különböző műveletek nyomon követését:

  • Az egyes felületek lekérdezéseinek száma.
  • Az egyes gyárak kérésének száma (és hogy a gyár agilis-e).

WINRT_NATVIS

Ha meg van adva, az Visual Studio natív hibakeresési vizualizációinak segítséget nyújtó segédfüggvényeket tartalmaz. A kódot futásidőben nem használja a rendszer; csak hibakereséshez létezik.

Ha nem szabja testre ezt a makrót, akkor a vizualizációt támogató függvények engedélyezve vannak, ha a _DEBUG definiálva van. További információ: Visual Studio C++/WinRT natív hibakeresési vizualizációja (natvis).

Összevonhatja azokat a fájlokat, amelyekhez a WINRT_NATVIS különböző beállításai tartoznak.

Ha bármelyik fájlt WINRT_NATVIS támogatással fordítják le, az eredményül kapott modulban engedélyezve lesznek a natív hibakeresési vizualizációk.

WINRT_EXPORT, WINRT_FAST_ABI_SIZE

Ne használja ezeket a makrókat.