2012-09-26 105 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