C编译器提供的相关参数
- #
- ##
- FILE和LINE等
- …和VA_ARGS
- ##VA_ARGS
“#”
把参数转换成字符串
|
|
“##”
连接
|
|
“##VA_ARGS”
如果只有一个参数呢
|
|
应用
KEY_PATH 提示
|
|
|
|
|
|
玩转可变参数
ARG_AT
|
|
|
PS: 参数<=5
ARG_COUNT
|
|
DEC
|
vs
|
为啥?
预编译后就能拿到结果
IS_EQ
|
一步一步展开
|
|
综合应用-metamacro_foreach
libextobjc库中的宏metamacro_foreach
metamacro_foreach(MACRO, SEP, …)
参数有三部分,MACRO
, SEP
和需要处理的数据 VAL
实现的功能是,把每个VAL
和对应的INDEX
通过MACRO
处理,得到的结果通过SEP
连接
|
|
根据需要处理数据的个数,生成 metamacro_foreach_cxtN,metamacro_foreach_cxtN 里面还定义了 metamacro_foreach_cxt(N-1), 并且展开宏 MACRO(INDEX(N-1), CONTEXT, (VALN-1)),并且会有一个SEP在前面,然后依次展开 metamacro_foreach_cxt(N-2),metamacro_foreach_cxt(N-3),最后得到一个整体的结果
00-11