https://www.cnblogs.com/wanghetao/p/4492582.html
https://www.cnblogs.com/Dageking/p/3185230.html
http://www.cnblogs.com/catch/p/4314256.html:初始化
https://www.cnblogs.com/tshua/p/5741009.html
編譯單元-作用域
https://www.cnblogs.com/wllwqdeai/p/11147412.html
一、全局變量
1.聲明
https://www.cnblogs.com/wanghetao/p/4492582.html
頭文件.h 中申明;
1)需要加extern么?在函數之外,加不加都默認是全局變量,不過不加extern,聲明的同時,默認定義,這樣被多次包含時,會導致多重定義;
2)宏名有效范圍!!
/*xx頭文件*/
#ifndef _XX_頭文件.H
#define _XX_頭文件.H
int A;
#endif
那么,很糟糕的是,這里的int A是個全局變量的定義,所以如果這個頭文件被多次引用的話,你的A會被重復定義,顯然語法上錯了。只不過有了這個#ifndef的條件編譯,所以能保證你的頭文件只被引用一次,不過也許還是不會出岔子,但若多個c文件包含這個頭文件時還是會出錯的,因為宏名有效范圍僅限於本c源文件,所以在這多個c文件編譯時是不會出錯的,但在鏈接時就會報錯,說你多處定義了同一個變量,
也可以在任意cpp中函數外聲明;
2.初始化???何時初始化???
全局變量的初始化要在 main 函數執行前完成,常識無疑;????
可以在任意cpp中函數外部定義,僅能定義一次;別的cpp中可以在函數外extern聲明;
3.訪問
1)include聲明了全局變量的.h文件;
2)如果不包含,在每個cpp中調用全局變量或全局函數之前,先extern ;
4.修改
只能在函數內部修改全局變量!不過在函數外部,那就是全局變量作用域,全局變量域可以調用變量么?(不調用怎么修改)
5.const修飾全局變量
https://www.cnblogs.com/wanghetao/p/4492582.html
const +全局變量:跟static相同的特性,即只能作用於本作用域;(一個cpp中定義的const全局變量,在另一個cpp中extern無法訪問)
external +const +全局變量:同external+全局變量,即其他編譯單元可以extern訪問,聲明格式得相同;(一個cpp中定義的extern+const+全局變量,在另一個cpp中extern聲明后可以訪問;)
二、全局函數
https://baike.baidu.com/item/全局函數/10185428?fr=aladdin