2014-04-20 33 views
-1

我用C寫的:初始化器不是一個常量。 malloc的

char *IP = malloc(12 * sizeof(char)); 

,但我得到「初始值不是一個常數

任何想法

+0

不能被看到的代碼只是一行說什麼! – haccks

+1

您發佈的代碼行沒有任何問題。再次檢查錯誤消息並確保你有正確的路線。 – ooga

+5

只能用常量表達式初始化全局作用域中的變量。所以,你不能在那裏使用任意的函數調用。這是編譯器說的。 – Marian

回答

4

您正在試圖將值分配給一個變量的任何外部?功能。在這種情況下,你只能分配恆定值,這是不是函數調用或操作的結果。例如,你可以做

int i = 3; 

但不

int i = pow(2, 2); 

對於你想做什麼,你可以宣佈在全球範圍內的變量,但隨後分配在main的值。

3

試試這個

char *IP; 
... 
IP = malloc(12 * sizeof(char));//in main 
+1

在我看來,這確實回答了這個問題(「嘗試這個」僅僅是一個比喻) –