C語言出現 "initializer element is not constant" 錯誤的原因


當在全局變量定義一個指針變量,並動態分配內存后,發現竟然編譯不過去,並提示 ""initializer element is not constant"":

char *buf = malloc(1024);

int main() {
    return 0;
};

 

后來知道了,不能將全局變量初始化為一個無法在編譯時期確定的值。再想想暑假學習的CSAPP中的鏈接那部分就知道為什么了。編譯器在生成目標文件時,需要將代碼段、數據段(初始化了的全局變量和靜態變量,未初始化的不會占用磁盤空間)寫入目標文件,因此需要在編譯時期確定全局變量的值,而 malloc 需要在運行時分配內存,所以就出現這個錯誤了。

學了鏈接竟然沒有想到這點,該死。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM