2012-12-12 39 views
2

可能重複:
C compiler error - initializer not constant
Definition of global variables using a non constant initializer錯誤t 1個t錯誤C2099:初始化不是一個常數

我有2個變量所定義的全局給出我得到的C2099錯誤。我使用Visual Studio 2005

這裏的變量:

const char* key = "AZFFProgramFiles"; 
const char* val = getenv(key); 
+1

儘管C++中的代碼可以正常運行,但在C中不允許使用函數來初始化全局變量。 –

回答

0

因爲val在靜態文件級別的聲明,其值必須知道在編譯時的編譯器。情況並非如此,因爲您通過調用getenv(key)來初始化它。這是因爲全局值被放置在編譯時創建的二進制文件的特殊存儲區域中。

+1

與const const限定符無關;你不能使用函數調用來初始化C中的全局變量(與C++不同)。 –

+0

另外,請注意,'val' **不是'const'合格**。它指向的類型是「const」限定的。而這樣的指針完全能夠指向不是「常量」限定的對象。 –

+0

謝謝muchh ..幫了很多..我們搖滾! :) –