Delen via


Compilerfout C2482

'id': dynamische initialisatie van draadgegevens niet toegestaan in beheerde/WinRT-code

Opmerkingen

In beheerde of WinRT-code kunnen variabelen die zijn gedeclareerd met behulp van het kenmerk __declspec(thread) opslagclassificatie of de thread_local-classificatieaanduiding voor opslagklassen niet worden geïnitialiseerd met een expressie waarvoor evaluatie tijdens runtime is vereist. Een statische expressie is vereist voor het initialiseren __declspec(thread) of thread_local gegevens in deze runtime-omgevingen.

Example

In het volgende voorbeeld wordt C2482 gegenereerd in beheerde (/clr) code en in WinRT (/ZW) code.

// C2482.cpp
// For managed example, compile with: cl /EHsc /c /clr C2482.cpp
// For WinRT example, compile with: cl /EHsc /c /ZW C2482.cpp
#define Thread __declspec( thread )
Thread int tls_i1 = tls_i1;   // C2482

int j = j;   // OK in C++; C error
Thread int tls_i2 = sizeof( tls_i2 );   // Okay in C and C++

U kunt dit probleem oplossen door thread-lokale opslag te initialiseren met behulp van een constante, constexprof statische expressie. Voer eventuele threadspecifieke initialisatie afzonderlijk uit.