首页 > 代码库 > C-宏

C-宏


可变参数宏

__VA_ARGS__:总体来说就是将左边宏中 ... 的内容原样抄写在右边 __VA_ARGS__ 所在的位置

也就是说

 define debug(a,b,c... ) printf(a,b,c,__VA_ARGS_)

等于是对于不确定有多少的变量都可以先明确调用


#define test(format, ...) fprintf (stderr, format, __VA_ARGS__)

main()
{
    char p[] ="it is:"
    test("%s %d", p[], num); 
    return 0;
}

c库中的特殊宏

__FILE__,编译时定义为当前的文件名

__LINE__ ,编译时定义为当前的行数

__FUNCTION__编译时定义为当前的函数名

printf(“ %s \n”,__FUNCTIOM__)

就可以打印出来当前的函数名 对于调试很有作用

## 连接符

#define A abc##def
    A ==> abcdef

#替代符

# stringified 把字符# 右边的 宏参数 转换为字符串 "argument"

等于把参数字符串化
example:
#define str(a) #a
    str(ADD(x)) ==> "ADD(x)"


C-宏