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