Sdílet prostřednictvím


Chyba kompilátoru C2482

Identifikátor: dynamická inicializace dat vlákna není povolena ve spravovaném kódu nebo kódu WinRT

Poznámky

Ve spravovaném kódu nebo kódu WinRT nelze proměnné deklarované pomocí modifikátoru třídy úložiště __declspec(thread) nebo specifikátor třídy úložiště thread_local nelze inicializovat pomocí výrazu, který vyžaduje vyhodnocení za běhu. K inicializaci __declspec(thread) dat v thread_local těchto prostředích runtime se vyžaduje statický výraz.

Příklad

Následující příklad vygeneruje C2482 ve spravovaném kódu (/clr) a v kódu WinRT (/ZW):

// 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++

Pokud chcete tento problém vyřešit, inicializujete místní úložiště vláken pomocí konstanty constexprnebo statického výrazu. Proveďte inicializaci specifickou pro vlákno samostatně.