C++程序会用到的一项预处理功能是头文件保护符,头文件保护符依赖于预处理变量。预处理变量有两种状态:已定义和未定义,#define指令把一个名字设定为预处理变量,另外两个指令则分别检查某个指定的预处理变量是否已经定义:#ifdef当且仅当变量已定义的时候为真,#inndef当且仅当变量未定义时为真。一旦检查结果为真,则执行后续操作直至遇到#endif为止。

  使用这些功能就能有效地防止重复包含的发生:

#ifndef SALES_H
#define SALES_H
……
#endif

  第一次包含Sales.h时,#ifndef的检查结果为真,预处理器将顺序执行后面操作直到遇到#endif为止。此时,预处理变量SALES_H的值将变为已定义,而且Sales.h也会被拷贝到程序中。后面如果再一次包含Sales.h,则#ifndef的检查结果为假,编译器将忽略#ifedef到#endif之间的部分。

最新文章

  1. windows下C语言编程获取磁盘(分区)使用情况
  2. Python自动化之rabbitmq rpc client端代码分析(原创)
  3. puppet组织架构
  4. shell实现trim函数-去除字符串两侧的空格(包括tab,space键)
  5. CodeForces 560B Gerald is into Art
  6. [IO] C# DirFileHelper文件与文件夹操作类教程与源码下载 (转载)
  7. [C++程序设计]函数模板
  8. [ An Ac a Day ^_^ ] CodeForces 468A 24 Game 构造
  9. MultipleOutputs新旧api
  10. 【模版】AC自动机(简单版)
  11. 中科曙光I620-G15服务器登录密码破解
  12. 将double或则float类型保留小数
  13. docker简单入门之使用docker容器部署简单的java web开源项目jpress博客程序
  14. WINFORM 多条件动态查询 通用代码的设计与实现
  15. python---ORM之SQLAlchemy(4)relationship多对多练习
  16. uuid.uuid4().hex
  17. python的map/reduce区别
  18. 国外某牛人的JsonModelBinder 实现 MVC 3.0
  19. Linux笔记:linux常用命令
  20. 使用idea的的第一个坑-----javax.xml.ws.WebServiceRef

热门文章

  1. HDU 4196 Remoteland
  2. JS时间戳
  3. C#入门教程(三)–接收用户输入、转义字符、类型转换-打造C#入门教程
  4. ThinkPHP的数据库访问的简单操作
  5. 【转】[转]order by 1是什么意思?
  6. 如何下载到最新的版本的Oracle Database
  7. SQL Server 损坏修复
  8. WEB系统开发方向
  9. OC基础-day04
  10. XMPPFramework ios 例子中链接服务器失败,opnefire 服务器链接失败