2010-07-02 30 views

回答

2

按照GCC文檔:

http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/Thread-Local.html

在C++中,如果一個初始化存在一個線程局部變量,它必須是一個常數表達式,如在5.19.2中定義的ANSI/ISO C++標準。

因此,您可以明確地將其設置爲零。
因此,爲了安全起見,在沒有任何假設的缺陷的情況下,您可以得到零初始化,並明確自己做。

+1

這就是引發這個問題的文檔,因爲它沒有繼續說出如果沒有初始化器會發生什麼情況。如果規則與靜態變量相同,那麼我應該可以假設爲零初始化,但是我看不到任何地方的拼寫。 – 2010-07-02 10:54:00

+1

除非明確闡述,否則不能假定它。但是,如果有一個完全合理的替代方案,即添加兩個達到相同效果的字符'= 0',那麼爲什麼你甚至會認爲某些工作有效;只是明確地做。 – 2010-07-02 15:55:47