C++ 中编写自己的头文件
2014-04-02 12:08
302 查看
我的主力博客:半亩方塘
在使用 struct 关键字自定义类型的时候,通常我们希望自定义的类型能够在不同的源文件中共享,在这种情况下,我们需要把自定义的类型组织成头文件的形式,一般情况下,头文件的文件名与我们所定义的类型的名字相同,头文件通常还会多一个以
.h 结尾的后缀。
在自定义类型的时候,可能还会用到其他头文件的功能,在这种情况下,需要在自定义类型的头文件中包含另一个所用到的头文件,在自定义类型完成后,当源程序用到这种自定义的类型的时候,包含与之相关的头文件,就隐含地包含了定义这种自定义类型时用到的另一个头文件,而在源程序中,可能用到的自定义类型的数据成员与自定义类型时用到的另一个头文件有关,则又需要在源程序中包含另一个头文件一次,也就是说,源程序对于自定义类型中用到的头文件包含了两次,那么,怎么确保这两次包含都能正确地工作而不影响程序最后的结果呢?C++ 中使用预处理器来避免这种冲突。
有一种预处理功能比较常见,就是我们在源程序编码的过程中使用的 #include 指令,这就是一种预处理,预处理器在编译源程序之前执行,可以部分地改变我们编写的程序,当预处理器看到 #include 时就会用指定的头文件的内容代替 #include,C++ 中还会用到的另一种预处理功能就是头文件保护符,头文件保护符依赖于预处理变量,用
Sales_data 类型时用到了头文件保护符:
预处理变量无视 C++ 语言的作用域规则,第一次包含 Sales_data.h 时,
Sales_data.h 时,
#ifndef 的检查结果为假,程序不再往下执行,这样,就能很好地处理多次包含同一个头文件所引起的冲突,预处理变量的名字要求唯一,一般与对应的头文件同名且全部采用大写的形式避免冲突,需要注意的是:
头文件即使(目前还)没有被包含在任何其他头文件中,也应该设置保护符,没必要太在乎你的程序到底需不需要
在使用 struct 关键字自定义类型的时候,通常我们希望自定义的类型能够在不同的源文件中共享,在这种情况下,我们需要把自定义的类型组织成头文件的形式,一般情况下,头文件的文件名与我们所定义的类型的名字相同,头文件通常还会多一个以
.h 结尾的后缀。
在自定义类型的时候,可能还会用到其他头文件的功能,在这种情况下,需要在自定义类型的头文件中包含另一个所用到的头文件,在自定义类型完成后,当源程序用到这种自定义的类型的时候,包含与之相关的头文件,就隐含地包含了定义这种自定义类型时用到的另一个头文件,而在源程序中,可能用到的自定义类型的数据成员与自定义类型时用到的另一个头文件有关,则又需要在源程序中包含另一个头文件一次,也就是说,源程序对于自定义类型中用到的头文件包含了两次,那么,怎么确保这两次包含都能正确地工作而不影响程序最后的结果呢?C++ 中使用预处理器来避免这种冲突。
有一种预处理功能比较常见,就是我们在源程序编码的过程中使用的 #include 指令,这就是一种预处理,预处理器在编译源程序之前执行,可以部分地改变我们编写的程序,当预处理器看到 #include 时就会用指定的头文件的内容代替 #include,C++ 中还会用到的另一种预处理功能就是头文件保护符,头文件保护符依赖于预处理变量,用
#define指令将某个名字设定为预处理变量,预处理变量有两种状态:已定义和未定义,有两种指令用来检测预处理变量的状态:
#ifdef和
#ifndef,当预处理变量已定义时
#ifdef为真,当预处理变量未定义时
#ifndef为真,当为真时代码可以继续执行,直到遇到
#endif指令为止,下面在定义
Sales_data 类型时用到了头文件保护符:
#ifndef SALES_DATA_H #define SALES_DATA_H #include <string> struct Sales_data { std::string bookNo; unsigned units_sold = 0; double revenue = 0.0; }; #endif
预处理变量无视 C++ 语言的作用域规则,第一次包含 Sales_data.h 时,
#ifndef的检查结果为真,程序一直执行直到遇到
#endif,当再次包含
Sales_data.h 时,
#ifndef 的检查结果为假,程序不再往下执行,这样,就能很好地处理多次包含同一个头文件所引起的冲突,预处理变量的名字要求唯一,一般与对应的头文件同名且全部采用大写的形式避免冲突,需要注意的是:
头文件即使(目前还)没有被包含在任何其他头文件中,也应该设置保护符,没必要太在乎你的程序到底需不需要
相关文章推荐
- 编写自己的头文件与C++中的c库
- C++编写自己的头文件
- C++系列之基本数据类型、常量、变量、const、引用、typedef、枚举、类类型、编写自己的头文件
- 怎样编写自己的C++头文件
- 编写自己的C++头文件
- 个人体会:编写自己的头文件
- C++ 编写自己的异常处理
- C/C++ 自己编写内存拷贝函数:memcpy()
- VC++6.0编写、引用自己的头文件
- C++ Studio (二) ----- atoi()函数的实现 (自己编写功能)
- 编写自己的头文件.h
- 自己编写链队列的头文件
- 转载]编写自己的C语言头文件
- C++中定义自己的头文件
- C++中定义自己的头文件
- C++:编写自己的函数时要keep in mind
- Linux下c++调用自己编写的matlab函数:通过shell script system command实现
- 编写自己的C语言头文件
- 第一部分 基本语言 第二章 变量和基本类型(2.9编写自己的头文件)(预处理器)
- C++易混知识点4: 自己编写一个智能指针(Reference Counting)学习auto_ptr和reference counting