本文共 2235 字,大约阅读时间需要 7 分钟。
程序包含三部分(嗯,对 我就是这么懒)
头文件中包含的内容:
#include 后面使用“”而不是<> 因为如果是<>则编译器回去标准目录查找文件, ""则会先在当前工作目录查找
不要将头文件加入到项目列表中, 也不要在源代码文件中使用#include来包含其他源代码文件
关于头文件的多次include的问题
多文件编译:
g++ cpp1, cpp2, cpp3.... -o file.exe(名字自己取)
C++ 4种不同的方法来存储数据
register 寄存器变量标识 嗯。。现在好像没啥用了
静态变量:
3种连接性, 外部链接性,内部连接性,无连接性
外部链接性: 不加static ------------------int global = 1000; int main(){...}
内部连接性: 加static ---------------static int global = 1000; int main(){....}
无连接性: void functl(int n){static int count = 0;}
外部连接性静态持续变量: 其他文件也可以访问
内不连接性静态巴拉巴拉:当前文件中访问
无连接巴拉巴拉: 当前代码块中访问
静态变量的初始化:
一般情况下是静态初始化,就是直接零初始化,然后如果程序员有显式的初始化,则再赋值过去。如果有一些简单计算的话。编译器就给他算掉再初始化。但是如果碰到带其他函数的复杂的表达式初始化。则执行动态初始化。也就是等待该函数被连接且执行的时候。
单定义规则:
C++ 要求在每个使用外部变量的文件中都要声明它, 但是单定义规则指出,变量只能有一次定义。
咋办? 关键字extern 来表示已经被定义过但是需要在本文件中声明的变量
file1.cpp
int a = 11;
file2.cpp
extern a;
cout << a;
程序示例:
extemal.cpp#includeusing namespace std;double warming = 0.3;void update(double dt);void local();int main(){ cout << "Global warming is " << warming << " degrees.\n"; update(0.1); cout << "Global warming is " << warming << " degrees.\n"; local(); cout << "Global warming is " << warming << " degrees.\n"; return 0;}
support.cpp#includeextern double warming;void update(double dt);void local();using std::cout;void update(double dt){ extern double warming; warming += dt; cout << "Updating gloabal warming to " << warming; cout << " degrees.\n";}void local(){ double warming = 0.8; cout << "Local warming = " << warming << " degrees.\n"; cout << "But global warming = " << ::warming; cout << " degress.\n";}
运行结果:
‘::’符号是指明使用全局变量warming
如果在一个文件中想要重新定义一个与外部变量同名的名称 只需要加上static关键字即可 编译器会隐藏外部变量
代码示例;
// twofile1.cpp#includeint tom = 3;int dick = 30;static int harry = 300;void remote_access();int main(){ using namespace std; cout << "main() reports the following addresses:\n"; cout << &tom << " = &tom, " << &dick << " = &dick, "; cout << &harry << " = &harry\n"; remote_access(); return 0;}// twofile2.cpp#include extern int tom;static int dick = 10;int harry = 200;void remote_access(){ using namespace std; cout << "remote_access() reports the following addresses: \n"; cout << &tom << " = &tom, " << &dick << " = &dick, "; cout << &harry << " = &harry\n"; }
转载地址:http://qjepi.baihongyu.com/