【常见的预处理功能】

  1. #include
  2. 头文件保护符
  3. 条件编译

【预处理器】

  编译之前执行的一段程序,可以部分地改变我们所写的程序

  举个例子:当预处理器看到#include标记时就会用指定的头文件的内容代替#include

【预处理变量】

  不属于命名空间std,由预处理器负责管理

  预处理变量有两种状态:已定义和未定义

  当用到一个预处理变量时,预处理器会自动地将它替换为实际值。

【头文件保护符】

  使用预处理变量以防止头文件被某个文件重复包含。

  4个指令:#define、#ifdef、#ifndef、#endif

  • #define:把一个名字设定为预处理变量
  • #ifdef及#ifndef:检查某个指定的预处理变量是否已经定义
  • #ifdef:当且仅当变量已定义时为真
  • #ifndef:当且仅当变量未定义时为真
  • 一旦结果检查为真,则执行后续操作直至遇到#endif指令为止。

  注:预处理变量无视C++关于作用域的规则。

【条件编译】

当不希望对源程序所有内容都进行编译时,我们可以使用“条件编译”。

预处理程序提供了条件编译的功能,条件编译有三种形式:#ifdef 、#ifndef 、#if

1. #ifdef形式的条件编译

#ifdef 标识符程序段1
#else程序段2
#endif

注:如果标识符已被#define定义过,则对程序段1进行编译,而不编译程序段2,直到遇到#endif

2. #ifndef形式的条件编译

#ifndef 标识符程序段1
#else程序段2
#endif

注:与#ifdef相反,即标识符没有被#define定义过,才编译程序段1。

3. #if形式的条件编译

#if 常量表达式 程序段1
#else程序段2
#endif

注:如果常量表达式的值为真(非0),则对程序段1进行编译,否则对程序段2进行编译

转载于:https://www.cnblogs.com/xzxl/p/7647389.html

预处理器预处理变量头文件保护条件编译相关推荐

  1. iOS项目预处理器环境变量设置

    preprocessor macro 预处理器宏 1.系统默认有两个预处理器环境,一个是DEBUG 一个是 RELEASE 都是大写. 2. 测试环境为0 可以进行log日志打印等  测试环境内存分配 ...

  2. 《C Primer Plus》第十六章——C预处理器和C库

    文章目录 C预处理器和C库 本章内容 翻译程序的第一步 明示常量:#define 记号 重定义常量 在#define中使用参数 用宏参数创建字符串:#运算符 预处理器黏合剂:##运算符 变参宏:... ...

  3. 再谈 CSS 预处理器

    CSS 预处理器是什么?一般来说,它们基于 CSS 扩展了一套属于自己的 DSL,来解决我们书写 CSS 时难以解决的问题: 语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器: ...

  4. Less/Sass预处理器

    Less,Sass预处理器教程 1.0 CSS预处理器的介绍 CSS预处理器 基于CSS的另一种语言 通过工具编译成CSS 添加了很多CSS不具备的特性 能提升CSS文件的组织方式 CSS预处理器到底 ...

  5. python预处理c语言_详解C语言编程中预处理器的用法

    预处理最大的标志便是大写,虽然这不是标准,但请你在使用的时候大写,为了自己,也为了后人. 预处理器在一般看来,用得最多的还是宏,这里总结一下预处理器的用法. #include #define MACR ...

  6. c++/c中的预编译,文件包含伪指令,#include,包含哨卫,头文件保护

    c++/c中的预编译处理: 预编译伪指令一般以#开头,前面只能是空白字符,其本身不是c/c++语句,可以出现在程序的任何地方,只要其展开后复合语法规则并且有效即可,其位置可以是头文件,函数体,控制结构 ...

  7. C++Primer::头文件设计基本原则 与 预处理器介绍

    1.学会编写自己的头文件 有多个文件组成的程序需要一种方法连接名字的使用和声明,在C++中就是通过头文件实现的.C++程序使用头文件包含的不仅仅是类定义. 为了允许把程序写成独立的逻辑块,C++支持所 ...

  8. C++头文件保护符和变量的声明定义

    1.#ifndef #define #endif头文件保护符 在编译的过程中,每个.cpp文件被看成一个单独的文件来编译成单独的编译单元,#ifndef 保证类的头文件在同一个.cpp文件里被多次引用 ...

  9. LESS是一个CSS预处理器,跨浏览器友好,提供诸如变量,函数, mixins 和操作等功能,可以构建动态CSS...

    什么是LESS? LESS是一个CSS预处理器,可以为网站启用可自定义,可管理和可重用的样式表. LESS是一种动态样式表语言,扩展了CSS的功能. LESS也是跨浏览器友好. CSS预处理器是一种脚 ...

最新文章

  1. 如何在多域下安装Exchang服务方法(二)
  2. 350. Intersection of Two Arrays II 两个数组的交集 II
  3. 安卓开发环境搭建(转)
  4. div超出部分滚动并且隐藏滚动条
  5. 风控特征:时间滑窗统计特征体系
  6. python输入年份月份输出天数_6.2(输入年份 月份 输出该月天数)
  7. Django第二天笔记
  8. Mybase到期 破解
  9. MySQL的NULL值
  10. MSSQL数据库中发现D99_Tmp数据表的处理办法
  11. 浅谈c#中使用lock的是与非
  12. [翻译]Web开发牛人访谈:你们都在用什么?
  13. 国内主流Hybrid app工具平台推荐
  14. hbase0.95 官方文档
  15. 【SpringBoot整合NoSql】-----ElasticSearch的安装与操作篇
  16. PIL Image P和L模式
  17. python只保留大写字母_python 将文件中除保留字外的小写字母换成大写字母(转换后可运行)...
  18. 用“等待-通知”机制优化循环等待
  19. CentOs6.5 详细安装步骤
  20. python 12306登录_基于Python3的12306登录实现

热门文章

  1. CC2530的串口实验
  2. jvm:运行时数据区--操作数栈
  3. java:socket通信
  4. 前端一HTML:十一:其他选择器
  5. Jmeter之线程组详解
  6. CTO关注:升级Win 10,除了更安全还有什么
  7. 【JavaScript】document对象属性
  8. corosync+pacemaker+crmsh配置高可用集群。
  9. Django资源大全
  10. 易语言---时间操作