全局变量与全局函数

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

原文地址:https://www.cnblogs.com/wllwqdeai/p/9978876.html