文章目录

  • #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 以及 # ##解释相关推荐

  1. #define 一些解释

    关于#deifne宏定义的解释 #include"stdio.h" #define MM(x,y) x*y #define SWAP(x,y) t=x;x=y;y=t int ma ...

  2. 史上最难英语单词——as的七十二变【猴精】

    全部知识点请进入:专升本英语--学习笔记[知识点全轻松学习]!!! https://blog.csdn.net/liu17234050/article/details/104576823 目录: 一: ...

  3. 在C++编译器下,将代码按照C语言编译

    extern "C"的使用 一.定义-defintion 二.extern "C"使用举例-example 三.extern "C"的用武之 ...

  4. 最近收集的9000个英语单词

    wrong                                   adj.错误的:不道德的:不适合的:不正常的adv.错误地n.坏事:不公正的事:错误v.无礼地对待:冤枉 visuali ...

  5. #ifdef _DEBUG #define new DEBUG_NEW #endif的解释

    在用vc时,利用AppWizard会产生如下代码: [cpp] view plain copy print? #ifdef _DEBUG #define new DEBUG_NEW #undef TH ...

  6. 超级全的解释#define宏——简洁明了,一看便知

    全面解释#define宏 宏是在预处理阶段的一种文本替换工具. 一.符号常量:#define 一种最简单的宏的形式如下: #define 宏名 替换文本 1  2  3  4  5  6  7  8 ...

  7. #define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、defined解释

    #define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. #define            定义一个预处理宏 #undef     ...

  8. 解释#define的用法

    #define指令命令C编译器,在整个程序中用于赋给指定项的值替换指定项,主要作用,在于方便更改,程序运行时,只需要修改#define一行就可,从而省去了在程序中逐一查找修改的麻烦. 具体应用如下: ...

  9. 具体解释可变參数列表

    可变參数   至少有一个參数 比如:void add(int a,- ){} 例题  模拟printf()函数 #include <stdio.h> #include <stdarg ...

最新文章

  1. Navicat Premium 连接 Oracle 数据库
  2. 2030年人类将成为混合式机器人?
  3. Java、Scala和Go语言多线程并发对比测试
  4. 手把手教你捕获数据包
  5. 使用AWS Lambda的CloudWatch事件通知
  6. C++学习之路 | PTA乙级—— 1059 C语言竞赛 (20 分)(精简)
  7. Android Studio 3.1.4 报错Failed to find style 'coordinatorLayoutStyle' in current theme
  8. EditPlus使用技巧(汇总)
  9. web页面找不到资源文件,报404,但是资源文件存在且路径没错
  10. cygwin 编译linux内核,【记录】Cygwin下交叉编译Linux内核时用make menuconfig去确认和修改配置...
  11. PermGen Space问题
  12. JS判断对象是不是数组“Array”
  13. VVC/JEM代码学习15:xCheckRDCostAffineMerge2Nx2N
  14. 【论文】 各高校的毕业论文的Latex模板链接
  15. KUKA库卡机器人零点失效维修案例
  16. 对样例SoC集成example salve模块
  17. 机械革命无法使用U盘启动linux,机械革命bios设置,教您机械革命bios怎么设置u盘启动...
  18. 举例说明一下常见的弱口令_幼儿语言表达弱,该怎么训练?
  19. 《桃花庵歌》- 唐寅
  20. 计算机网络之运输层(概述、端口、UDP )

热门文章

  1. PHP 各种金融利息的计算方法
  2. H5版仿制微信跳一跳小游戏,网页版仿微信跳一跳小游戏源码,实现了跳一跳的基本核心功能
  3. ApiPost 前后端协作开发神器 Postman+Swagger+Mock+Websocket的完美替代品
  4. Win7桌面显示音乐波动 - 音频频谱分析仪
  5. 在华为 Kylin V10 SP1操作系统,HUAWEI,Kunpeng 920 CPU(4Cores)单机上模拟部署生产环境TiDB集群...
  6. 可变悬挂调节软硬_大众cc可变悬架软硬调节是什么意思
  7. 数据挖掘之分类问题、决策树问题以及一个关于误差的泛化理论
  8. Python 用Ursina 3D引擎做一个太阳系行星模拟器
  9. SendMessgae
  10. html z-index 设置无效,css z-index属性不起作用的原因及解决方法