數組聲明一次,所有的 定義聲明 有切僅有一次!
別人遇到的問題如下:
在聲明定義時,定義數組如下:
int G_glob[100];
在其他文件引用時聲明如下:
int *G_glob;
這樣的操作,在vc中,是可以編譯通過的,這種情況大家都比較模糊並且需要注意,數組與指針類似,但並不等於說對數組的聲明起變量就是指針。上面所說的的程序在運行時發現了問題,在引用聲明的那個文件中,使用這個指針時總是提示內存訪問錯誤,原來我們的連接程序並不把指針與數組等同,連接時,也不把他們當做同一個定義,而是認為是不相關的兩個定義,當然會出現錯誤。正確的使用方法是在引用聲明中聲明如下:
int G_glob[100];
最好是加上 引用申明標識:
extern int G_glob[100];
更好的是:
另外需要說明的是,在引用聲明中由於不需要涉及到內存分配,可以簡化如下,這樣在需要對全局變量的長度進行修改時,不用把所有的引用聲明也全部修改了。
extern int G_glob[];
本來看到是說有引用鏈接的,結果最后沒有我這里也只好結束了。
來自:janders 只知其名不知居。