打印
[资料下载]

赛元SC92F8003宏定义注意事项

[复制链接]
楼主: robertesth
手机看帖
扫描二维码
随时随地手机跟帖
41
abotomson| | 2023-11-8 22:08 | 只看该作者 回帖奖励 |倒序浏览
尽量避免使用具有副作用的宏。例如,如果一个宏会增加或减少某个变量的值,那么在使用这个宏时就需要特别小心。因为这可能会引入难以预见的错误。

使用特权

评论回复
42
jackcat| | 2023-11-8 22:16 | 只看该作者
由于宏定义在编译时进行文本替换,因此复杂的表达式可能会导致错误的结果或编译错误。

使用特权

评论回复
43
belindagraham| | 2023-11-8 22:31 | 只看该作者
预处理器不会对宏定义进行语法检查,宏定义时出现的语法错误只能被编译器检测:预处理器只负责进行宏展开,并不对宏内容进行语法检查,所以如果宏定义中出现了语法错误,只能等到编译阶段才能发现。

使用特权

评论回复
44
maudlu| | 2023-11-8 22:52 | 只看该作者
宏定义可能会产生意想不到的副作用。例如,如果你在一个宏中包含一个函数调用,那么这个函数可能会被多次调用,这可能不是你想要的结果。

使用特权

评论回复
45
1988020566| | 2023-11-9 21:42 | 只看该作者
宏是预处理器直接展开替换的,不需要经过栈操作,所以执行速度会快一些,但是也可能导致代码膨胀。

使用特权

评论回复
46
sesefadou| | 2023-11-9 21:52 | 只看该作者
因为宏定义只是文本替换,而不需要像函数调用那样进行栈操作和返回地址的计算,所以宏定义的效率通常高于函数调用。

使用特权

评论回复
47
laoxu| | 2023-11-14 17:05 | 只看该作者
常数, 编译器默认为 4位 int型 , 后面加个 L 即可 (long型)

#define TIME_1MS 1L
#define TIME_1S (1000 * TIME_1MS)

#define TIME_OVER (5*60*TIME_1S )  //5min

使用特权

评论回复
48
LLGTR| | 2023-12-4 18:13 | 只看该作者
在界说宏时,应防止利用与库函数雷同的名称,以防备发生冲突。

使用特权

评论回复
49
AIsignel| | 2024-1-8 10:02 | 只看该作者
宏定义的优先级非常高,对于操作,它将优先于其他操作符。

使用特权

评论回复
50
天天向善| | 2024-1-8 15:47 | 只看该作者
精确、公道地利用宏界说可以简化代码以及提高效率

使用特权

评论回复
51
鹿鼎计| | 2024-1-9 12:10 | 只看该作者
define定义的宏可以出现在程序的任何地方

使用特权

评论回复
52
V853| | 2024-2-1 21:54 | 只看该作者
宏定义的参数应该尽可能简洁和清晰,并且不应该包含模棱两可的词汇表,如变量名或函数名。

使用特权

评论回复
53
LinkMe| | 2024-2-2 19:36 | 只看该作者
预处理器直接用文本替换宏

使用特权

评论回复
54
digit0| | 2024-2-4 10:13 | 只看该作者
需要注意带有参数的宏定义与参数化函数之间的区别,特别是在替换参数时。

使用特权

评论回复
55
Pretext| | 2024-2-4 12:33 | 只看该作者
利用宏界说可以进步代码的可读性以及可维护性

使用特权

评论回复
56
理想阳| | 2024-2-6 01:14 | 只看该作者
在编译宏定义时,由于文本替换,复杂表达式可能导致不正确的结果或编译错误。

使用特权

评论回复
57
朝生| | 2024-3-2 18:56 | 只看该作者
宏定义区分大小写,因此宏名称必须拼写准确。

使用特权

评论回复
58
软核硬核| | 2024-3-6 09:54 | 只看该作者
宏定义中的表达式不求值,而是直接替换。

使用特权

评论回复
59
芯路例程| | 2024-6-9 07:47 | 只看该作者
宏定义的基本语法是通过定义指令 # 来定义宏,一般格式为: 定义 # ,宏名称,替换文本。

使用特权

评论回复
60
小小蚂蚁举千斤| | 2024-6-23 14:17 | 只看该作者
在C语言中,宏定义是一种预处理指令

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则