下面随笔将给出C++多文件结构和预编译命令细节。

多文件结构和编译预处理命令

c++程序的一般组织结构

  一个工程可以划分多个源文件

  类声明文件(.h文件)

  类实现文件(.cpp文件)

  类的使用文件(main()所在.cpp文件)

  利用工程来组合各个文件

多文件工程举例

 1 //文件1,类的定义,Point.h
2
3 class Point { //类的定义
4
5 public: //外部接口
6
7 Point(int x = 0, int y = 0) : x(x), y(y) { count++; }
8
9 Point(const Point &p);
10
11 ~Point() { count--; }
12
13 int getX() const { return x; }
14
15 int getY() const { return y; }
16
17 static void showCount(); //静态函数成员
18
19 private: //私有数据成员
20
21 int x, y;
22
23 static int count; //静态数据成员
24
25 };
 1 //文件2,类的实现,Point.cpp
2
3 #include "Point.h"
4
5 #include <iostream>
6
7 using namespace std;
8
9
10
11 int Point::count = 0; //使用类名初始化静态数据成员
12
13
14
15 Point::Point(const Point &p) : x(p.x), y(p.y) {
16
17 count++;
18
19 }
20
21
22
23 void Point::showCount() {
24
25 cout << " Object count = " << count << endl;
26
27 }
 1 //文件3,主函数,5_10.cpp
2
3 #include "Point.h"
4
5 #include <iostream>
6
7 using namespace std;
8
9
10
11 int main() {
12
13 Point a(4, 5); //定义对象a,其构造函数使count增1
14
15 cout <<"Point A: "<<a.getX()<<", "<<a.getY();
16
17 Point::showCount(); //输出对象个数
18
19 Point b(a); //定义对象b,其构造函数回使count增1
20
21 cout <<"Point B: "<<b.getX()<<", "<<b.getY();
22
23 Point::showCount(); //输出对象个数
24
25 return 0;
26
27 }

条件编译指令——#if 和 #endif

#if  常量表达式

//当“ 常量表达式”非零时编译

程序正文

#endif

......

条件编译指令——#else

#if   常量表达式

//当“ 常量表达式”非零时编译

程序正文1

#else

//当“ 常量表达式”为零时编译

程序正文2

#endif

条件编译指令——#elif

#if 常量表达式1

程序正文1  //当“ 常量表达式1”非零时编译

#elif 常量表达式2

程序正文2  //当“ 常量表达式2”非零时编译

#else

程序正文3  //其他情况下编译

#endif

条件编译指令

#ifdef 标识符

程序段1

#else

程序段2

#endif

C++多文件结构和预编译命令的更多相关文章

  1. 预编译命令 #if DEBUG

    在控制台程序根据预编译命令: http://www.askapache.com/windows/advanced-batch-scripting.html namespace SXGYCarTrans ...

  2. ASP.NET 预编译命令(解决发布后第一次访问慢问题)

    ASP.NET 编译工具 (Aspnet_compiler.exe) 官方说明 新建bat文件   @echo off   CD /d C:\Windows\Microsoft.NET\Framewo ...

  3. 【VS开发】C/C++预编译命令

    C/C++中宏总结C程序的源代码中可包括各种编译指令,这些指令称为预处理命令或预处理器.虽然它们实际上不是C语言的一部分,但却扩展了C程 序设计的环境. 预处理指令的主要作用就是把通过预处理的内建功能 ...

  4. .net 网站预编译命令

    aspnet_compiler -v /Aspnet  -p "C:\inetpub\wwwroot\a"  C:\inetpub\wwwroot\a2 /Aspnet   iis ...

  5. vs 预编译命令行

    xcopy "$(SolutionDir)\Transight_FY_DataExchange_UI\CuscapiUpdaterServer.xml"  /i /d /y

  6. (十八)C语言之预编译命令、宏

  7. 深入理解include预编译原理

    http://ticktick.blog.51cto.com/823160/596179 你了解 #include 某个 .h 文件后,编译器做了哪些操作么? 你清楚为什么在 .h文件中定义函数实现的 ...

  8. Net预编译 真的好用与否

    公司手机网站上千个 ASP.NET开发一套程序只是配置不一样,所有站点呈现的内容就不一样了, 以前的程序是ASP的,现在ASP程序猿少之又少了,所以公司要求转.NET,新开发也用NET.所有现在上千个 ...

  9. C预编译, 预处理, C/C++头文件, 编译控制,

    在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的 ...

随机推荐

  1. Codeforces Round #634 (Div. 3)

    D题想复杂了,花了好多时间,感觉也没时间看F了,就来写个题解蹭蹭访问量把^_^ 传送门:1335 A. Candies and Two Sisters 题意:你要把n个糖果分给两个人,两个人的糖果数不 ...

  2. SP3267 DQUERY - D-query 莫队板子题

    题意可见:https://www.luogu.com.cn/problem/SP3267 可在vj上提交:https://vjudge.net/problem/SPOJ-DQUERY 题意翻译 给出一 ...

  3. HDU 3032 Nim or not Nim?(SG打表找规律)

    题意: 给你n堆石子,你每次只能操作一堆石子 1.拿去任意个,最少1个 2.把这一堆分成两堆,没有要求对半分 解析+代码: 1 //解题思路: 2 //对于一个给定的有向无环图,定义关于图的每个顶点的 ...

  4. 线段树扫描线(一、Atlantis HDU - 1542(覆盖面积) 二、覆盖的面积 HDU - 1255(重叠两次的面积))

    扫描线求周长: hdu1828 Picture(线段树+扫描线+矩形周长) 参考链接:https://blog.csdn.net/konghhhhh/java/article/details/7823 ...

  5. Codeforces Round #672 (Div. 2) A. Cubes Sorting (思维)

    题意:有一长度为\(n\)的一组数,每次可以交换两个数的位置,问能否在\(\frac{n*(n-1)}{2}-1\)次操作内使得数组非递减. 题解:不难发现,只有当整个数组严格递减的时候,操作次数是\ ...

  6. 【转】Docker 核心技术与实现原理

    转自:https://draveness.me/docker 提到虚拟化技术,我们首先想到的一定是 Docker,经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段 ...

  7. Chapter Zero 0.2.1 执行运算与判断的CPU

    目录 执行运算与判断的CPU CPU效能比较的指标 CPU的工作频率:外频与倍频 32位与64位的CPU与总线[宽度] CPU的等级 超线程(Hyper-Threading,HT) 网上摘下几张主板图 ...

  8. 【非原创】sg函数模板

    学习博客:戳这里 解题模型: 1.把原游戏分解成多个独立的子游戏,则原游戏的SG函数值是它的所有子游戏的SG函数值的异或.        即sg(G)=sg(G1)^sg(G2)^...^sg(Gn) ...

  9. h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated

    Reference 问题 ... h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype ...

  10. 浏览器缓存 All In One

    浏览器缓存 All In One HTTP 缓存 强缓存 expired Cache-Control max-age s-maxage 协商缓存 E-tag last-modified 本地缓存 co ...