我想知道使用宏而不是声明函数的好处。
例如,我在ATMEL微控制器的USB库的头文件中找到以下行:
#define udd_detach_device() ( Clr_bits(UDP->UDP_TXVC,UDP_TXVC_PUON))
为什么这样定义而不是像函数?
谢谢您的帮助。
#define
所做的所有工作都是用以下文本udd_detach_device()
替换您来源中( Clr_bits(UDP->UDP_TXVC,UDP_TXVC_PUON))
的每个文本出现。
这是在所谓的预处理阶段,即在编译代码之前完成的。
您应该将此C预处理程序(CPP)阶段视为一个文本编辑阶段,在其中可以替换或忽略部分代码。 CPP识别有限的所有以#
开头的编辑命令。
阅读this Wikipedia page了解更多背景信息。