宏
编译警告宏
1 | /* compile time assertion */ |
用#waring 编译判断更为合理
宏过载
1 |
|
这个宏
__MSH_GET_MACRO
的作用是选择一个函数来调用。它接受五个参数:_1
,_2
,_3
,_FUN
和__VA_ARGS__
,然后返回_FUN
。__MSH_GET_MACRO
被用来根据传入的参数数量来选择要调用的函数。具体来说,如果传入的参数数量为2,那么_FUN
就是_MSH_FUNCTION_CMD2
;如果传入的参数数量为3,那么_FUN
就是_MSH_FUNCTION_CMD2_OPT
。这种技术被称为宏过载,它允许你根据传入的参数数量来选择不同的宏来执行。
_FUN
在这里的作用是作为一个占位符,它代表了要调用的函数。
宏定义
1 |
__rtmsym_##symbol##_name
:这是一个字符串常量,存储在.rodata.name
段中。__rtmsym_##symbol
:这是一个rt_module_symtab
结构体的实例,存储在RTMSymTab
段中(.text)。它包含两个字段:- 一个是指向符号的指针。
- 另一个是指向符号名称的指针。
这个宏定义的目的是为了在运行时能够通过符号的名称查找到符号的地址,实现动态链接和加载模块.
#undef
- #undef 标识符,用来将前面定义的宏标识符取消定义。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 wdfk-prog的个人博客!
评论