Wie lokale lokale Variablen in C ++ initialisiert werden? [Duplikat]

9

Ich wollte die c ++ 11 thread_local verwenden, um die Variable thread_local zu erstellen und zu verwenden, aber da sie noch nicht von gcc unterstützt wird, verwende ich gcc specific __thread . Die Art, wie ich die Variable deklariert habe, ist

%Vor%

Wenn ich es kompiliere, erhalte ich einen Fehler wie

%Vor%

Wie man es richtig macht?

PS: gcc-Version: 4.6.3

    
polapts 22.08.2012, 14:27
quelle

1 Antwort

5

Sie müssen die faule Initialisierung verwenden.

%Vor%

m_minIntInitialized ist garantiert null.

In den meisten Fällen ( ELF-Spezifikation ) wird es in den Abschnitt .tbss gestellt, der auf Null initialisiert ist.

Für C ++ - Ссылка

  

Für alle anderen nicht lokalen statischen und threadlokalen Variablen Null   Initialisierung findet statt. In der Praxis, Variablen, die gehen   Null-initialisiert werden, werden in das .bss-Segment des Programms gestellt   Bild, das keinen Speicherplatz auf der Festplatte belegt und vom Betriebssystem auf Null gesetzt wird   beim Laden des Programms.

    
nothrow 22.08.2012, 14:35
quelle