當在全局變量定義一個指針變量,並動態分配內存后,發現竟然編譯不過去,並提示 ""initializer element is not constant"":
char *buf = malloc(1024); int main() { return 0; };
后來知道了,不能將全局變量初始化為一個無法在編譯時期確定的值。再想想暑假學習的CSAPP中的鏈接那部分就知道為什么了。編譯器在生成目標文件時,需要將代碼段、數據段(初始化了的全局變量和靜態變量,未初始化的不會占用磁盤空間)寫入目標文件,因此需要在編譯時期確定全局變量的值,而 malloc 需要在運行時分配內存,所以就出現這個錯誤了。
學了鏈接竟然沒有想到這點,該死。