#ifndef A
#define A
...
...
#endif
在同一个文件中只能讲同一个头文件包含一次。
使用这种技术为了将文件内容包含在#ifndef中
就是说如果编译器第一次碰到A的定义,则会查看ifndef到endif之间的内容,并读取A定义这一行
如果在同一个文件中遇到包含该文件的代码,则直接跳到endif后面的一行上。
注意:这种方法不是防止编译器将文件包含两次,而是让它忽略第一次包含之外的所有内容。
C++为静态存储持续变量提供了三种链接性:外部链接(可在其他文件访问),内部链接(只能在当前文件访问)与无链接(只能在当前函数或代码块中访问)。
编译器将分配固态内存块来存储所有的静态变量,这些变量在整个程序执行期间一直存在。
分别介绍一下特点:
1.想创建链接性为外部的静态持续变量,必须在代码块的外面声明它.(外部变量)
2.想创建链接性为内部的静态持续变量,必须在代码块的外面声明它,并且用static限定符。(静态全局)
3.想创建没有链接性的静态持续变量,必须在代码块内部声明它,并使用static限定符。(静态局部)
int A = 0;
static int B = 0;
int main()
{
...;
}
void fun1(int t)
{
static int count = 0;
int llama = 0;
}
例如这样的代码,A为外部的静态持续变量,B为内部的,count为无链接的
但是count与llama不同的是,count哪怕在fun1没有执行的时候,也留在内存中。
c-v限定符:
const与volatile
它表明,内存被初始化后,程序便不能再对它进行修改
mutable:
它用来指出:即使结构(或类)变量为const,其某个成员也可以被修改。
在默认情况下全局变量的链接性为外部的,但是const全局变量的链接性为内部的。
内部链接性意味着,每个文件都有自己的一组常量,而不是所有文件共享一组常量。每个定义都是其所属文件私有的。
我们可以用extern来覆盖默认的内部链接性,编程外部的
extern const int A = 50;
这种情况下,必须在所有使用该常量的文件中使用extern关键字来声明。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务