C++预处理功能:头文件保护符
2014-09-01 16:06
239 查看
现在还在看C++ primer这本书,暂时还在理解阶段,先记下自己觉得比较重要的东西。
C++预处理命令是对程序代码在正式编译以前的一些预先出来,最常见的预处理有文件包含、条件编译、布局控制和宏替换。
1、C++一项预处理功能是头文件保护符,头文件保护符依赖于预处理变量。
预处理变量有两种状态:已定义和未定义。
#define 指令把一个名字设定为预处理变量,另外两个变量则则分别检查某个指定的预处理变量是否定义:#ifdef当且仅当变量已定义时为真,#ifndef当且仅当变量未定义时为真。一旦检查结果为真,则执行后续操作直至遇到#endif指令为止。
使用这些功能就能有效的防止重复包含的发生。
2、整个程序中的预处理变量包括头文件保护符必须唯一,通常的做法是基于头文件中类的名字来构建保护符的名字,以确保其唯一性。为了避免与程序中的其他实体发生名字冲突,一般把预处理变量的名字大写。
头文件即使目前还没有被包含在任何其他头文件中,也应该设置保护符。
例如:
第一次包含sales_data.h时,#ifndef的检查结果为真,预处理器将顺序执行后面的操作直至遇到#endif为止。此时,预处理变量SALES_DATA_H的值将变为已定义,而且sales_data.h也会被拷贝到我们的程序中来。后面如果再一次包含sales_data.h,则ifndef的检查结果将为假,编译器将忽略#ifndef到#endif之间的部分。
C++预处理命令是对程序代码在正式编译以前的一些预先出来,最常见的预处理有文件包含、条件编译、布局控制和宏替换。
1、C++一项预处理功能是头文件保护符,头文件保护符依赖于预处理变量。
预处理变量有两种状态:已定义和未定义。
#define 指令把一个名字设定为预处理变量,另外两个变量则则分别检查某个指定的预处理变量是否定义:#ifdef当且仅当变量已定义时为真,#ifndef当且仅当变量未定义时为真。一旦检查结果为真,则执行后续操作直至遇到#endif指令为止。
使用这些功能就能有效的防止重复包含的发生。
2、整个程序中的预处理变量包括头文件保护符必须唯一,通常的做法是基于头文件中类的名字来构建保护符的名字,以确保其唯一性。为了避免与程序中的其他实体发生名字冲突,一般把预处理变量的名字大写。
头文件即使目前还没有被包含在任何其他头文件中,也应该设置保护符。
例如:
#ifndef SALEAS_DATA_H #define SALES_DATA_H #include<string> struct sales_data { std::string bookno; unsigned units_sold; double revenue; }; #endif int main() { return 0; }
第一次包含sales_data.h时,#ifndef的检查结果为真,预处理器将顺序执行后面的操作直至遇到#endif为止。此时,预处理变量SALES_DATA_H的值将变为已定义,而且sales_data.h也会被拷贝到我们的程序中来。后面如果再一次包含sales_data.h,则ifndef的检查结果将为假,编译器将忽略#ifndef到#endif之间的部分。
相关文章推荐
- 三种预处理功能 : 宏定义 --文件包含 -- 条件编译 import include 常用c/c++库
- TabBars代码解读之——C++文件切换功能
- 如何关闭系统文件保护功能
- Win7如何使用系统保护功能恢复删除文件
- C++基础知识(const、引用、头文件保护)
- 自定义Windows 2000的文件保护功能
- emacs配置详解及C/C++IDE全功能配置演示(附配置文件)
- emacs配置详解及C/C++IDE全功能配置演示(附配置文件)
- emacs配置详解及C/C++IDE全功能配置演示(附配置文件)
- atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结
- Windows文件保护功能原理探究
- c++服务器与android客户端进行文件传输功能的实现
- C/C++ 头文件 常用头文件功能查询表
- c++实现查看文件被占用功能
- 在C++文件读写操作中,seekg()和seekp()是一样的功能
- WinXP系统文件保护功能介绍
- C++:预处理功能
- 鸡啄米:C++编程入门系列之二十四(C++程序设计必知:多文件结构和编译预处理命令)
- 【Win7系统保护功能可恢复误删文件】
- atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结