c语言创建多级目录函数 c语言目录操作函数( 二 )


Clock g_Clock;
int main() //主函数
{
cout"文件作用域的时钟类对象:"endl;
//引用具有文件作用域的对象:
g_Clock.ShowTime();
g_Clock.SetTime(10,20,30);
Clock myClock(g_Clock);//声明具有块作用域的对象myClock,并通过默认拷贝构造函数用g_Clock初始化myClock
cout"块作用域的时钟类对象:"endl;
myClock.ShowTime(); //引用具有块作用域的对象
}
在vs2010中如何生成这三个文件呢?我们可以点菜单中Project-Add Class,在弹出的对话框中选择c++ class,然后由弹出个对话框,在class name处填上类名点finish就可以了,这样.h文件和.cpp文件会自动生成,我们也可以点Project-Add New Item,在弹出的对话框中选择Header File(.h)或C++ File(.cpp)来生成.h文件或.cpp文件 。
Clock.cpp和main.cpp都使用#include "Clock.h"把类Clock的头文件Clock.h包含进来 。#include指令的作用就是将#include后面的文件嵌入到当前源文件该点处,被嵌入的文件可以是.h文件也可以是.cpp文件 。如果不包含Clock.h,Clock.cpp和main.cpp就不知道Clock类的声明形式,就无法使用此类,所以所有使用此类的文件都应该包含声明它的头文件 。关于#include指令下面鸡啄米会讲 。
上面的程序在编译时 , 由Clock.cpp和Clock.h编译生成Clock.obj,由main.cpp和Clock.h编译生成main.obj , 然后就是链接过程,Clock.obj和main.obj链接生成main.exe可执行文件 。如果我们只修改了类的实现文件,那么只需重新编译Clock.cpp并链接就可以,别的文件不用管 , 这样就提高了效率 。在Windows系统中的C++程序用工程来管理多文件结构,而Unix系统一般用make工具管理 , 如果大家从事Unix系统软件开发,就需要自己写make文件 。
二.编译预处理程序
编译器在编译源程序以前,要由预处理程序对源程序文件进行预处理 。预处理程序提供了一些编译预处理指令和预处理操作符 。预处理指令都要由“#”开头,每个预处理指令必须单独占一行,而且不能用分号结束,可以出现在程序文件中的任何位置 。
1.#include指令
#include指令也叫文件包含指令,用来将另一个源文件的内容嵌入到当前源文件该点处 。其实我们一般就用此指令来包含头文件 。#include指令有两种写法:
#include 文件名
使用这种写法时,会在C++安装目录的include子目录下寻找中标明的文件,通常叫做按标准方式搜索 。
#include "文件名"
使用这种写法时,会先在当前目录也就是当前工程的目录中寻找""中标明的文件,若没有找到,则按标准方式搜索 。
2.#define和#undef指令
如果c语言创建多级目录函数你学过C语言,就会知道用#define可以定义符号常量,比如,#define PI 3.14 这条指令定义了一个符号常量PI,它的值是3.14 。C++也可以这样定义符号常量,但一般更常用的是在声明时用const关键字修饰 。C语言还用#define定义参数宏,来实现简单的函数运算,比如 , #define add(x,y) (x+y) 这条指令说明如果我们用到add(1,2)则预处理后就会用(1+2)代替,C++中一般用内联函数来实现 。
#undef用来删除由#define定义的宏,使其不再起作用 。
3.条件编译指令
用条件编译指令可以实现某些代码在满足一定条件时才会参与编译 , 这样我们可以利用条件编译指令将同一个程序在不同的编译条件下生成不同的目标代码 。例如 , 我们可以在调试程序时加入一些调试语句,用条件编译指令控制只有在debug模式下这些调试语句才参与编译,而在release模式下不参与编译 。
条件编译指令有5中形式:
a.第一种形式:

推荐阅读