C语言中,宏替换与定义全局变量的区别是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中,宏替换与定义全局变量的区别是啥?相关的知识,希望对你有一定的参考价值。
宏定义不分配内存,全局变量定义分配内存。宏定义的值在程序中是不能改变的,只是宏替换,全局变量的值是可以在程序中更改的。宏定义不存在类型问题,它的参数也是无类型的。 参考技术A 全局变量是可以在程序中任何地方使用
而且是可以修改的
宏定义也可以在任何地方使用
但是不能在之后修改
数据类型没有限制的 参考技术B #define
SECONDS_PER_YEAR
(60
*
60
*
24
*
365)UL
表达更清晰
增加可读性
#define
产生嵌入代码的方法
对嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
这句c语言宏定义是啥意思, 请高手解释一下, 谢谢了!
参考技术A "1,宏定义,你可理解为就是字符串替换#define
GSCALAR(v,
NAME)
g.v.vtype,
NAME,
Parameters::k_param_
##
v,
&g.v
就是把用GSCALAR(v,
NAME)
的地方,替换为
g.v.vtype,
NAME,
Parameters::k_param_
##
v,
&g.v
,注意哦,这里的花括号是替换的一部分,并把参数值带进去
2、STATIC
const
AP_Param::Info
var_info[]
PROGMEM,这句是说申明了1个结构体数组
结构体初始化值得时候可用
花括号,初始化,里边是结构体每一个单元值的列表
这里用宏定义以后,把初始化结构体初值的
花括号语句定义为宏,后来用这类宏组成赋值语句
多次调出使用这类宏,应为是结构体数组啊
亲,你最后还少1个花括号做结束啊"
以上是关于C语言中,宏替换与定义全局变量的区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章
网易云课堂_C语言程序设计进阶_第六周:程序结构:内存模型(全局变量和局部变量)头文件宏定义函数指针和回调函数,ACL图形库的消息机制