全局變量與全局函數


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

 


免責聲明!

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



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