# #define 以及 # ##解释
文章目录
- #define定义标示符
- #define的语法
- #define定义宏
- 宏的声明方式
- # 和 ##的作用
- \#是将字符拼接在字符串中
- ##是将两边的符号连接起来,成为一个符号
#define定义标示符
#define定义标示符就是将一个名称起一个别名,在程序运行之前使用别名将原来的名字替换掉,从而达到简化代码书写的作用
#define的语法
define name stuff
name是别名,stuff是原本的名称
#define NUM 120
#define STR "abcdef"
int main()
{printf("%d\n", NUM + 10);printf("%s", STR);return 0;
}
其实#define就是将NUM 和 STR 简单的进行了转换,再进行计算即可
define也可以将复杂的符号进行简单的替换
#define reg register //将register改名为reg
int main()
{//register int a = 0;// 定义一个寄存器变量areg int a = 0;return 0;
}
注意:#define 后面最好不要加上分号,避免不必要的错误
#define定义宏
宏的声明方式
define name( parament-list ) stuff
其中的parament-list 是一个由逗号隔开的符号表,它们可能出现在stuff中。
define只是进行了简单的替换,并不会进行运算
#define ADD(x) x+x
#define MUL(x) x*x
int main()
{int ret = ADD(2);printf("%d\n", ret1);int ret2 = MUL(3);printf("%d\n", ret2);int ret3 = MUL(2 + 3);printf("%d\n", ret3);return 0;
}
ret1 的结果就是2+2=4
ret2的结果就是3*3=9
ret3的结果是11,为什么不是25?就是因为#define不会进行运算,只是简单的替换,所以是2+3*2+3=11
要是想要得到25就要加上括号,严格规定优先级顺序
#define MUL(x) (x)*(x)
int main()
{int ret3 = MUL(2 + 3);printf("%d\n", ret3);return 0;
}
使用#define宏定义时,如果不注意就会发生错误,所以在宏定义的时候要多加括号,严格规定优先级的顺序
# 和 ##的作用
#是将字符拼接在字符串中
#define PRINT(n,format) printf("the value of "#n" is "#format"",n)
int main()
{int a = 10;PRINT(a, "%d");return 0;
}
##是将两边的符号连接起来,成为一个符号
#define TYPE(class,num) class##num
int main()
{int class105 = 100;printf("%d", TYPE(class, 105));
}
//打印结果就是100
# #define 以及 # ##解释相关推荐
- #define 一些解释
关于#deifne宏定义的解释 #include"stdio.h" #define MM(x,y) x*y #define SWAP(x,y) t=x;x=y;y=t int ma ...
- 史上最难英语单词——as的七十二变【猴精】
全部知识点请进入:专升本英语--学习笔记[知识点全轻松学习]!!! https://blog.csdn.net/liu17234050/article/details/104576823 目录: 一: ...
- 在C++编译器下,将代码按照C语言编译
extern "C"的使用 一.定义-defintion 二.extern "C"使用举例-example 三.extern "C"的用武之 ...
- 最近收集的9000个英语单词
wrong adj.错误的:不道德的:不适合的:不正常的adv.错误地n.坏事:不公正的事:错误v.无礼地对待:冤枉 visuali ...
- #ifdef _DEBUG #define new DEBUG_NEW #endif的解释
在用vc时,利用AppWizard会产生如下代码: [cpp] view plain copy print? #ifdef _DEBUG #define new DEBUG_NEW #undef TH ...
- 超级全的解释#define宏——简洁明了,一看便知
全面解释#define宏 宏是在预处理阶段的一种文本替换工具. 一.符号常量:#define 一种最简单的宏的形式如下: #define 宏名 替换文本 1 2 3 4 5 6 7 8 ...
- #define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、defined解释
#define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. #define 定义一个预处理宏 #undef ...
- 解释#define的用法
#define指令命令C编译器,在整个程序中用于赋给指定项的值替换指定项,主要作用,在于方便更改,程序运行时,只需要修改#define一行就可,从而省去了在程序中逐一查找修改的麻烦. 具体应用如下: ...
- 具体解释可变參数列表
可变參数 至少有一个參数 比如:void add(int a,- ){} 例题 模拟printf()函数 #include <stdio.h> #include <stdarg ...
最新文章
- Navicat Premium 连接 Oracle 数据库
- 2030年人类将成为混合式机器人?
- Java、Scala和Go语言多线程并发对比测试
- 手把手教你捕获数据包
- 使用AWS Lambda的CloudWatch事件通知
- C++学习之路 | PTA乙级—— 1059 C语言竞赛 (20 分)(精简)
- Android Studio 3.1.4 报错Failed to find style 'coordinatorLayoutStyle' in current theme
- EditPlus使用技巧(汇总)
- web页面找不到资源文件,报404,但是资源文件存在且路径没错
- cygwin 编译linux内核,【记录】Cygwin下交叉编译Linux内核时用make menuconfig去确认和修改配置...
- PermGen Space问题
- JS判断对象是不是数组“Array”
- VVC/JEM代码学习15:xCheckRDCostAffineMerge2Nx2N
- 【论文】 各高校的毕业论文的Latex模板链接
- KUKA库卡机器人零点失效维修案例
- 对样例SoC集成example salve模块
- 机械革命无法使用U盘启动linux,机械革命bios设置,教您机械革命bios怎么设置u盘启动...
- 举例说明一下常见的弱口令_幼儿语言表达弱,该怎么训练?
- 《桃花庵歌》- 唐寅
- 计算机网络之运输层(概述、端口、UDP )
热门文章
- PHP 各种金融利息的计算方法
- H5版仿制微信跳一跳小游戏,网页版仿微信跳一跳小游戏源码,实现了跳一跳的基本核心功能
- ApiPost 前后端协作开发神器 Postman+Swagger+Mock+Websocket的完美替代品
- Win7桌面显示音乐波动 - 音频频谱分析仪
- 在华为 Kylin V10 SP1操作系统,HUAWEI,Kunpeng 920 CPU(4Cores)单机上模拟部署生产环境TiDB集群...
- 可变悬挂调节软硬_大众cc可变悬架软硬调节是什么意思
- 数据挖掘之分类问题、决策树问题以及一个关于误差的泛化理论
- Python 用Ursina 3D引擎做一个太阳系行星模拟器
- SendMessgae
- html z-index 设置无效,css z-index属性不起作用的原因及解决方法