第九章

1、单独编译

自己的头文件里可放的内容:

  函数原型,使用#define或const定义的符号常量,结构声明,类声明,模板声明,内联函数

对于自己写的头文件要双引号包含文件名,则编译器将首先查找当前的工作目录或源代码目录;当文件名包含在间括号中,则编译器将在标准头文件的主机系统的文件系统中查找。

在同一文件中只能将同一头文件包含一次。   C/C++中有基于预处理编译指令#ifndef(if not defined)

#ifndef COORDIN_H

……

#endif                 //代码的含义为当以前没有使用预处理编译指令#define定义名称COORDIN_H时,才处理#ifndef和#endif之间的语句。

2、存储持续性、作用域和链接性

存储:

 自动存储持续性:在函数定义中声明的变量,在程序开始时被创建,在执行完函数或代码时,内存被释放。           //无链接性

  静态存储持续性:在函数定义外定义的变量和使用关键字static定义的变量,他们在整个运行过程中都存在。       

    //在代码块内的使用关键字static,无链接性;在代码块外没有使用关键字static,有外部链接性;在代码快外,使用了关键字static,有内部链接特性

 线程存储持续性: 使用关键字thread_local声明的,其生命周期与所述的线程一样长。

 动态存储持续性:用new运算符分配的内存将一直存在,直到使用delete运算符将其释放或程序结束为止。

------------------

file1

int tom=3;

int dick=30;

static int harry=300;  //只能在这个文件内部使用

------------------------

file2

extern int tom ;        //使用的还是file1的文件中的变量

static int dick=10;    //重载了dick,是内部链接

原文地址:https://www.cnblogs.com/daocaorenblog/p/4811514.html