预处理器预处理变量头文件保护条件编译
【常见的预处理功能】
- #include
- 头文件保护符
- 条件编译
【预处理器】
编译之前执行的一段程序,可以部分地改变我们所写的程序
举个例子:当预处理器看到#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
预处理器预处理变量头文件保护条件编译相关推荐
- iOS项目预处理器环境变量设置
preprocessor macro 预处理器宏 1.系统默认有两个预处理器环境,一个是DEBUG 一个是 RELEASE 都是大写. 2. 测试环境为0 可以进行log日志打印等 测试环境内存分配 ...
- 《C Primer Plus》第十六章——C预处理器和C库
文章目录 C预处理器和C库 本章内容 翻译程序的第一步 明示常量:#define 记号 重定义常量 在#define中使用参数 用宏参数创建字符串:#运算符 预处理器黏合剂:##运算符 变参宏:... ...
- 再谈 CSS 预处理器
CSS 预处理器是什么?一般来说,它们基于 CSS 扩展了一套属于自己的 DSL,来解决我们书写 CSS 时难以解决的问题: 语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器: ...
- Less/Sass预处理器
Less,Sass预处理器教程 1.0 CSS预处理器的介绍 CSS预处理器 基于CSS的另一种语言 通过工具编译成CSS 添加了很多CSS不具备的特性 能提升CSS文件的组织方式 CSS预处理器到底 ...
- python预处理c语言_详解C语言编程中预处理器的用法
预处理最大的标志便是大写,虽然这不是标准,但请你在使用的时候大写,为了自己,也为了后人. 预处理器在一般看来,用得最多的还是宏,这里总结一下预处理器的用法. #include #define MACR ...
- c++/c中的预编译,文件包含伪指令,#include,包含哨卫,头文件保护
c++/c中的预编译处理: 预编译伪指令一般以#开头,前面只能是空白字符,其本身不是c/c++语句,可以出现在程序的任何地方,只要其展开后复合语法规则并且有效即可,其位置可以是头文件,函数体,控制结构 ...
- C++Primer::头文件设计基本原则 与 预处理器介绍
1.学会编写自己的头文件 有多个文件组成的程序需要一种方法连接名字的使用和声明,在C++中就是通过头文件实现的.C++程序使用头文件包含的不仅仅是类定义. 为了允许把程序写成独立的逻辑块,C++支持所 ...
- C++头文件保护符和变量的声明定义
1.#ifndef #define #endif头文件保护符 在编译的过程中,每个.cpp文件被看成一个单独的文件来编译成单独的编译单元,#ifndef 保证类的头文件在同一个.cpp文件里被多次引用 ...
- LESS是一个CSS预处理器,跨浏览器友好,提供诸如变量,函数, mixins 和操作等功能,可以构建动态CSS...
什么是LESS? LESS是一个CSS预处理器,可以为网站启用可自定义,可管理和可重用的样式表. LESS是一种动态样式表语言,扩展了CSS的功能. LESS也是跨浏览器友好. CSS预处理器是一种脚 ...
最新文章
- 如何在多域下安装Exchang服务方法(二)
- 350. Intersection of Two Arrays II 两个数组的交集 II
- 安卓开发环境搭建(转)
- div超出部分滚动并且隐藏滚动条
- 风控特征:时间滑窗统计特征体系
- python输入年份月份输出天数_6.2(输入年份 月份 输出该月天数)
- Django第二天笔记
- Mybase到期 破解
- MySQL的NULL值
- MSSQL数据库中发现D99_Tmp数据表的处理办法
- 浅谈c#中使用lock的是与非
- [翻译]Web开发牛人访谈:你们都在用什么?
- 国内主流Hybrid app工具平台推荐
- hbase0.95 官方文档
- 【SpringBoot整合NoSql】-----ElasticSearch的安装与操作篇
- PIL Image P和L模式
- python只保留大写字母_python 将文件中除保留字外的小写字母换成大写字母(转换后可运行)...
- 用“等待-通知”机制优化循环等待
- CentOs6.5 详细安装步骤
- python 12306登录_基于Python3的12306登录实现