2012-09-26 75 views
3

有一个相关的悬而未决的问题在这里:
c++ - Variables auto-initialized to 0 in unnamed namespace? - Stack OverflowC++匿名命名空间:变量初始化为0?

当我在C全局函数指针我可以声明为静态和它的初始化为NULL,并且只适用于我的文件。在C++中,我将很多东西切换到匿名命名空间,但我很好奇它们是否拥有相同的保证。如果我有一个匿名命名空间中的函数指针,它会被初始化为null?在程序启动时

感谢

+0

只需将它自己初始化为NULL即可。这是最清晰的方式。 – nneonneo

+0

否 - “名称空间”与它无关:静态存储始终初始化为0/NULL。是的,指定“static struct * myptr = NULL;”绝对是一个好习惯,只是为了明确你的意图。恕我直言... – paulsm4

回答

8

所有变量与静态存储时间是零初始化。这些包括在名称空间范围(在全局名称空间或任何其他名称空间中,包括未命名的名称空间)声明的所有变量。

+0

只是为了清楚这里你说的东西像'namespace {int var; }'有静态存储持续时间? – loop

+0

@test:是的。命名空间与它无关 –

+0

好的谢谢。在10分钟等待期过后,我会将其标记为正确。 – loop