c语言中undef,C/C++中常用的预处理方法 #define #undef #ifdef #endif
初学C语言时,经常会看见文件起始一句#define PI 3.1415之类的预处理语句,大部分国内教材没有再进一步介绍C其他的预处理语句。下面进行一些总结:
define
常规用法
#define macro-name replacement-text 又被称为宏替换,出现这一语句后,该语句之后所有宏均会被替换为replacement-text,包括在此文件后处理的文件。
在C程序生成流程中(C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件),宏替换发生在编译之前,可通过gcc -E选项验证。
注意,marco-name作为简单的被替换字段,无法求sizeof(),不占用运行时内存,在替换时由于编译器并不检查其所处位置,可能出现替换后运算顺序不符合预期的情况。这是一种十分隐蔽的错误。如#define x a+b。
建议在运算中使用const修饰符初始化需要的变量。
define带参数
例如#define MIN(a,b) (a
又例如#define PR(EX) cout << #EX <
这其中,“#EX”中的井号称为字符串化运算符,在预处理器中使用这个符号将把参数转换为一个字符数组。
ifdef #else #endif
用于对程序的某个部分进行有条件地编译,在调试一段代码时常用。用法:#define DEBUG // 注意不能使用NDEBUG,这是C中的关键字。
//...
#ifdef DEBUG
//调试代码,当DEBUG被define时进行编译
#else
//DEBUG没有被define时编译,可省略此部分
//...
#endif
//调试代码段结束
通过#undef DEBUG可以方便地取消标记的define。
c语言中undef,C/C++中常用的预处理方法 #define #undef #ifdef #endif相关推荐
- 深度学习中常用数据预处理方法
数据归一化处理,比较简单公式为 (x-min)/(max-min),主要目的是将数据的范围缩小至0-1之间,因而对数据绝对值的大小不敏感 2.数据标准化处理,也比较简单,公式为(x-avg)/sigm ...
- c语言中math的库函数,C语言中math.h库中的常用函数
C语言中math.h库中的常用函数 int abs(int i) 返回整型参数i的绝对值 double cabs(struct complex znum) 返回复数znum的绝对值 double fa ...
- main c语言中变量的定义,C语言中在main函数中定义的变量是全局变量么_后端开发...
PHP 和 JavaSript 区别_后端开发 PHP是一种创建动态交互性站点的强有力的服务器端脚本语言,主要用于Web开发领域,而JavaSript是一种具有函数优先的轻量级,解释型或即时编译型的高 ...
- 统计计量 | 统计学中常用的数据分析方法汇总
来源:数据Seminar本文约10500字,建议阅读15+分钟 统计学中常用的数据分析方法汇总. Part1描述统计 描述统计是通过图表或数学方法,对数据资料进行整理.分析,并对数据的分布状态.数字特 ...
- 5种JavaScript中常用的排序方法
5种JavaScript中常用的排序方法 01.冒泡排序 通过相邻数据元素的交换,逐步将待排序序列变为有序序列,如果前面的数据大于后面的数据,就将两值进行交换,将数据进行从小到大的排序,这样对数组的第 ...
- 深度学习中常用的误差方法
深度学习中常用的误差方法有: 标准差(Standard Deviation): 标准差也叫均方差,是方差的算术平方根,反应数据的离散程度 ,标准差越小,数据偏离平均值越小,反之亦然 . 公式为: py ...
- VB的一些项目中常用的通用方法-一般用于验证类
1.VB的一些项目中常用的通用方法: ' 设置校验键盘输入值,数字 Public Function kyd(key As Integer) As Integer '20060728 Dim mycha ...
- 光滑噪声数据常用的方法_数据挖掘中常用的数据清洗方法
是新朋友吗?记得先点蓝字关注我哦- 数据挖掘中 常用的数据清洗方法 在数据挖掘过程中,数据清洗主要根据探索性分析后得到的一些结论入手,然后主要对四类异常数据进行处理,分别是缺失值(missing va ...
- lammps和atomsk中常用的建模方法
文章目录 1.Atomsk生成刃型位错 2.Atomsk生成任意角度晶界 3.Atomsk生成孪晶 4.Atomsk生成非晶 5.合金多晶结构建模 6.Atomsk建立管道类模型 7.Atomsk建立 ...
最新文章
- jbutton增加监听事件_Swing 如何进行事件监听
- github项目怎么运行_利用 GitHub 从零开始搭建一个博客
- python3(十四)Python 异常处理
- 集成CDI和WebSockets
- Windows7中右键菜单无新建文本文档选项的解决办法(注册表)
- 扎实基础深入篇(七):函数和类没那么复杂
- oracle 错误代码问题处理经验汇总
- stata15导入csv中文乱码
- 【数字通信】Matlab实现16QAM调制与解调,判决,误码率计算
- 医学编码与计算机,医学编码培训课件.ppt
- 湖州南浔张静江:“满堂花醉三千客,一剑霜寒四十州”
- css旋转立方体教程,通过CSS3实现旋转立方体的方法
- 解读:大数据分析及其数据来源
- jpa执行插入报error performing isolated work错误
- 2020李宏毅学习笔记——14.Convolution Netural Network
- Python新手入门指导
- 一口气入门计算机网络基础(CCNA)
- 炽热如初 向新而生|ISC2022 HackingClub白帽峰会圆满举办
- 汉诺塔问题及最长数组子串问题源码
- Java Web入门之JSTL标签的解析及使用(超详细必看)
热门文章
- 什么是同源策略,什么是跨域,如何解决跨域
- WP Rocket激活版 WordPress优化插件 v3.7.3
- monkey与monkeyrunner比较
- java如何写接口给别人调用
- python3中默认的字符编码和文件编码_python3 unicod,utf-8,gbk的编码和解码中文显示问题...
- 人工智能公司Adept完成3.5亿美元融资 要抓住ChatGPT热潮
- ASP.NET程序开发范例宝典
- 简述计算机辅助设计工作过程,选矿厂计算机辅助设计作业.doc
- A037_Mybatis基础
- Allegro技巧:删除dangling线