1、C++项目结构
C++程序的一般组织架构
- 类声明文件(.h文件)
- 类实现文件(.cpp文件)
- 类的使用文件(main()所在的.cpp文件)
用工程组合各文件
2、编译链接
编译链接过程
3、外部变量/外部函数/命名空间
外部变量
- 除了在定义它的源文件中可以使用外,还能被其他文件使用
- 文件作用域中定义的变量,默认情况下都是外部变量
- 在其他文件中如果需要使用,需要用extern关键字声明
外部函数
- 在所有类外声明的函数(非成员函数),都是具有文件作用域的
- 这样的函数可以在不同的编译单元中被调用
- 只要在调用之前进行引用性声明(声明函数原型)即可。
将变量和函数限制在编译单元内
- 在匿名命名空间中定义的变量和函数,都不会暴露给其他编译单元
-
namespace{//匿名的命名空间 int n; void f(){ n++; } }
4、标准C++库
5、编译预处理
#include
包含指令- 将一个源文件嵌入到当前源文件中该点处
- #include<文件名>
- 按标准方式搜索,文件位于C++系系统目录的include子目录下
- #include"文件名"
- 首先在当前目录中搜索,若没有,再按标准方式搜索
#define
宏定义指令- 定义符号常量,很多情况下已被const定义语句取代
- 定义带参数宏,已被内联函数取代
#undef
- 删除由#define定义的宏,使之不再起作用
#if
和#endif
(条件编译指令)- 一般用在.h文件中,防止头文件被重复包含,防止变量被重复定义
-
#if 常量表达式 //当“常量表达式”非零时候编译 这里是程序正文 #endif //一般用在.h文件中,防止头文件被重复包含
-
#if 常量表达式 //当“常量表达式”非零时候编译 这里是程序正文1 #else //当“常量表达式”为零时候编译 这里是程序正文2 #endif
-
#ifdef 标识符 程序段1 #else 程序段2 #endif /* 如果“标识符”经#define定义过,且未经#undef删除, 则编译程序段1,否则编译程序段2 */
-
#ifndef 标识符 程序段1 #else 程序段2 #endif /* 如果“标识符”未被定义过, 则编译程序段1,否则编译程序段2 */
参考:郑莉C++课程
标签:文件,定义,5.7,C++,编译,endif,预处理,函数 From: https://www.cnblogs.com/FishSmallWorld/p/17097927.html