Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Opmerking
De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Deze macro's bepalen specifieke compilerfuncties.
| Macroniveau | Description |
|---|---|
_ATL_ALL_WARNINGS |
Een symbool dat fouten in projecten mogelijk maakt die zijn geconverteerd vanuit eerdere versies van ATL. |
_ATL_APARTMENT_THREADED |
Definieer of een of meer van uw objecten appartementthreading gebruiken. |
_ATL_CSTRING_EXPLICIT_CONSTRUCTORS |
Maakt bepaalde CString constructors expliciet, waardoor onbedoelde conversies worden voorkomen. |
_ATL_ENABLE_PTM_WARNING |
Definieer deze macro om C++-standaardsyntaxis te vereisen. Hiermee wordt de C4867-compilerfout gegenereerd wanneer niet-standaardsyntaxis wordt gebruikt om een aanwijzer te initialiseren naar een lidfunctie. |
_ATL_FREE_THREADED |
Definieer of een of meer van uw objecten gratis of neutrale threading gebruiken. |
_ATL_MODULES |
Hiermee kunt u ATL-projecten compileren met machtigingen en ATL gebruiken met C++-modules. |
_ATL_MULTI_THREADED |
Een symbool dat aangeeft dat het project objecten heeft die zijn gemarkeerd als Zowel, Vrij als Neutraal. In plaats daarvan moet de macro _ATL_FREE_THREADED worden gebruikt. |
_ATL_NO_AUTOMATIC_NAMESPACE |
Een symbool dat het standaardgebruik van naamruimte als ATL voorkomt. |
_ATL_NO_COM_SUPPORT |
Een symbool dat voorkomt dat COM-gerelateerde code wordt gecompileerd met uw project. |
ATL_NO_VTABLE |
Een symbool dat voorkomt dat de vtable-aanwijzer wordt geïnitialiseerd in de constructor en destructor van de klasse. |
ATL_NOINLINE |
Een symbool dat aangeeft dat een functie niet inline mag zijn. |
_ATL_SINGLE_THREADED |
Geef aan of al uw objecten gebruikmaken van het model voor één threading. |
_ATL_ALL_WARNINGS
Een symbool dat fouten in projecten mogelijk maakt die zijn geconverteerd vanuit eerdere versies van ATL.
#define _ATL_ALL_WARNINGS
Opmerkingen
Vóór Visual C++ .NET 2002 heeft ATL veel waarschuwingen uitgeschakeld en hebben ze uitgeschakeld, zodat ze nooit in gebruikerscode werden weergegeven. Specifiek:
Voorwaardelijke expressie C4127 is constant
C4786 'id': id is afgekapt tot 'getal' tekens in de foutopsporingsinformatie
C4201 niet-standaardextensie gebruikt: naamloze struct/union
C4103 'bestandsnaam': gebruikt #pragma pack om uitlijning te wijzigen
C4291 'declaratie': er is geen overeenkomende operator verwijderd; geheugen wordt niet vrijgemaakt als initialisatie een uitzondering genereert
C4268 'identifier': 'const' statische/globale gegevens geïnitialiseerd met door compiler gegenereerde standaardconstructor vult het object met nullen
C4702 onbereikbare code
In projecten die zijn geconverteerd uit eerdere versies, worden deze waarschuwingen nog steeds uitgeschakeld door de kopteksten van bibliotheken.
Als u dit gedrag wilt wijzigen, voegt u de volgende regel toe aan het pch.h bestand (stdafx.h in Visual Studio 2017 en eerder) voordat u kopteksten van bibliotheken opvoegt.
#define _ATL_ALL_WARNINGS
Als dit #define wordt toegevoegd, zijn de ATL-headers voorzichtig om de status van deze waarschuwingen te behouden, zodat ze niet globaal worden uitgeschakeld (of als de gebruiker expliciet afzonderlijke waarschuwingen uitschakelt, niet inschakelen).
Voor nieuwe projecten is deze #define standaard ingesteld in pch.h (stdafx.h in Visual Studio 2017 en eerder).
_ATL_APARTMENT_THREADED
Definieer of een of meer van uw objecten appartementthreading gebruiken.
_ATL_APARTMENT_THREADED
Opmerkingen
Hiermee geeft u appartement threading. Voor andere opties en een beschrijving van de threadingmodellen die beschikbaar zijn voor een ATL-object, raadpleegt u De wizard Threading Model en Opties van project opgeven , ATL Simple Object.
_ATL_CSTRING_EXPLICIT_CONSTRUCTORS
Maakt bepaalde CString constructors expliciet, waardoor onbedoelde conversies worden voorkomen.
_ATL_CSTRING_EXPLICIT_CONSTRUCTORS
Opmerkingen
Wanneer deze constructor is gedefinieerd, worden alle CString constructors die één parameter nemen gecompileerd met het expliciete trefwoord, waardoor impliciete conversies van invoerargumenten worden voorkomen. Dit betekent bijvoorbeeld dat wanneer _UNICODE wordt gedefinieerd, als u een char* tekenreeks probeert te gebruiken als een CString constructorargument, een compilerfoutresultaten. Gebruik deze macro in situaties waarin u impliciete conversies tussen smalle en brede tekenreekstypen moet voorkomen.
Door de _T macro te gebruiken voor alle constructortekenreeksargumenten, kunt u compilatiefouten definiëren _ATL_CSTRING_EXPLICIT_CONSTRUCTORS en voorkomen, ongeacht of _UNICODE deze is gedefinieerd.
_ATL_ENABLE_PTM_WARNING
Definieer deze macro om het gebruik van ansi-C++ standaardconforme syntaxis voor aanwijzer naar lidfuncties af te dwingen. Als u deze macro gebruikt, wordt de C4867-compilerfout gegenereerd wanneer niet-standaardsyntaxis wordt gebruikt om een aanwijzer naar een lidfunctie te initialiseren.
#define _ATL_ENABLE_PTM_WARNING
Opmerkingen
De ATL- en MFC-bibliotheken zijn gewijzigd zodat deze overeenkomen met de verbeterde standaard-C++-conformiteit van de Microsoft C++-compiler. Volgens de ANSI C++-standaard moet de syntaxis van een aanwijzer naar een klasselidfunctie zijn &CMyClass::MyFunc.
Wanneer _ATL_ENABLE_PTM_WARNING niet is gedefinieerd (de standaardcase), schakelt ATL/MFC de C4867-fout in macrokaarten (met name berichtkaarten) uit, zodat code die in eerdere versies is gemaakt, kan blijven bouwen zoals voorheen. Als u definieert _ATL_ENABLE_PTM_WARNING, moet uw code voldoen aan de C++-standaard.
Het niet-standaardformulier is echter afgeschaft. U moet bestaande code verplaatsen naar de standaardsyntaxis van C++ . Bijvoorbeeld de volgende code:
BEGIN_MESSAGE_MAP(CMFCListViewDoc, CDocument)
ON_COMMAND(ID_MYCOMMAND, OnMycommand)
END_MESSAGE_MAP()
Moet worden gewijzigd in:
BEGIN_MESSAGE_MAP(CMFCListViewDoc, CDocument)
ON_COMMAND(ID_MYCOMMAND, &CMFCListViewDoc::OnMycommand)
END_MESSAGE_MAP()
Voor kaartmacro's voegt u het en-teken '&' toe. U moet het teken niet opnieuw toevoegen aan uw code.
_ATL_FREE_THREADED
Definieer of een of meer van uw objecten gratis of neutrale threading gebruiken.
_ATL_FREE_THREADED
Opmerkingen
Hiermee geeft u gratis threading. Gratis threading is gelijk aan een multithread appartementsmodel. Zie Het threadingmodel van het project opgeven voor andere threadingopties en opties, atL Simple Object Wizard voor een beschrijving van de threadingmodellen die beschikbaar zijn voor een ATL-object.
_ATL_MODULES
Hiermee kunt u ATL-projecten compileren met permissive- en ATL gebruiken met C++-modules.
_ATL_MODULES
_ATL_MULTI_THREADED
Een symbool dat aangeeft dat het project objecten bevat die zijn gemarkeerd als Beide, Vrij of Neutraal.
_ATL_MULTI_THREADED
Opmerkingen
Als dit symbool is gedefinieerd, haalt ATL code op waarmee de toegang tot globale gegevens correct wordt gesynchroniseerd. Nieuwe code moet in plaats daarvan de equivalente macro _ATL_FREE_THREADED gebruiken.
_ATL_NO_AUTOMATIC_NAMESPACE
Een symbool dat het standaardgebruik van naamruimte als ATL voorkomt.
_ATL_NO_AUTOMATIC_NAMESPACE
Opmerkingen
Als dit symbool niet is gedefinieerd, inclusief atlbase.h standaard, using namespace ATL wat kan leiden tot naamconflicten. Als u dit wilt voorkomen, definieert u dit symbool.
_ATL_NO_COM_SUPPORT
Een symbool dat voorkomt dat COM-gerelateerde code wordt gecompileerd met uw project.
_ATL_NO_COM_SUPPORT
ATL_NO_VTABLE
Een symbool dat voorkomt dat de vtable-aanwijzer wordt geïnitialiseerd in de constructor en destructor van de klasse.
ATL_NO_VTABLE
Opmerkingen
Als de vtable-aanwijzer niet kan worden geïnitialiseerd in de constructor en destructor van de klasse, kan de linker de vtable en alle functies elimineren waarnaar deze verwijst. Wordt uitgevouwen naar __declspec(novtable).
Example
class ATL_NO_VTABLE CMyClass2 :
ATL_NOINLINE
Een symbool dat aangeeft dat een functie niet inline mag zijn.
ATL_NOINLINE inline
myfunction()
{
...
}
Parameterwaarden
myfunction
De functie die niet inline moet zijn.
Opmerkingen
Gebruik dit symbool als u ervoor wilt zorgen dat een functie niet inline wordt geplaatst door de compiler, ook al moet deze als inline worden gedeclareerd zodat deze in een headerbestand kan worden geplaatst. Wordt uitgevouwen naar __declspec(noinline).
_ATL_SINGLE_THREADED
Definiëren of al uw objecten gebruikmaken van het model voor één threading
_ATL_SINGLE_THREADED
Opmerkingen
Hiermee geeft u op dat het object altijd wordt uitgevoerd in de primaire COM-thread. Zie Het threadingmodel van het project opgeven voor andere threadingopties en opties, atL Simple Object Wizard voor een beschrijving van de threadingmodellen die beschikbaar zijn voor een ATL-object.