如果让你用C语言写个宏定义,我相信大部分同学顺手就能写出define。
这也是C语言中最常见的宏定义写法,这样的代码在预处理的时候直接被替换。
在C语言中,还有两种宏定义容易被忽略。
一种是预定义宏,顾名思义,就是别人预先定义好的,拿过来用就行。
常见的比如file line date time 分别表示文件名、行号、日期和时间,主要就是让用户用起来更方便。
还有一种定义宏的方式,是在编译的时候,以 gcc 为例。
#includeint main() { printf("%d ", A); return 0; }
我们在代码中输出 A,如果代码直接拿过来编译,肯定会报错,A 既不是变量也不是常量,属于未定义。
但是如果在编译的时候,加上 -D 选项,后面跟上 A,可以给他赋值,也可以不赋值,那编译就能顺利通过,A默认的值是 1。
gcc test.c -o test -D A
这个用法的使用场景很多,比如跨平台,比如加一些调试选项,如果定义了 DEBUG,就输出下面的调试信息,编译的时候,通过 -D 选项,就能控制调试信息是否输出,可以避免项目发
布的时候,再去一行一行删除调试信息。
-
C语言
+关注
关注
180文章
7616浏览量
138004 -
代码
+关注
关注
30文章
4841浏览量
69196 -
宏定义
+关注
关注
0文章
51浏览量
9060 -
define
+关注
关注
0文章
16浏览量
3784
原文标题:不用define,如何定义宏
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
汇总和深挖C语言中宏定义所有的知识点
![汇总和深挖<b class='flag-5'>C</b><b class='flag-5'>语言中</b><b class='flag-5'>宏</b><b class='flag-5'>定义</b>所有的知识点](https://file.elecfans.com/web1/M00/EA/A0/pIYBAGB0I1WAHm-GAAAhLEGduac543.png)
C语言中的__attribute__宏定义之section属性
![<b class='flag-5'>C</b><b class='flag-5'>语言中</b>的__attribute__<b class='flag-5'>宏</b><b class='flag-5'>定义</b>之section属性](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论