c语言标记的作用,C语言的宏定义中的符号

"#"

"#"的作用是将标记转换为字符串

例:

#define add(x) printf("%s = %d \n",#x,x)

add(4+4) 将会输出4+4 = 16 #x就表示4+4

"##"

"##"运算符是把两个语言符号组合成一个语言符号

例:

#define format(n) n##_##元

format(5) 展开将会是 5_元

当##在参数中时意义不同

另外在define func(fmt, args...)printf(fmt, ##args)

宏定义中,##的作用是当func()传递的只有一个参数时,

这时宏定义展开多出来一个"," ,##的作用就是消除这个多余的逗号,当传递的参数多余两个时,##不起作用。

"..."

"..."表示有多个参数

例:

define func(fmt, args...)printf(fmt, ##args)

define func(fmt, ...)printf(fmt, ##__VA_AGRS__)

二者是等效的,其中"..."表示可变参数的含义,而__VA_ARGS__是一个可变参数的宏,很少人知道这个宏,

这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)

ANSI C标准中常用的几个标准预定义宏

__LINE__:在源代码中插入当前源代码行号;

__FILE__:在源文件中插入当前源文件名;

__DATE__:在源文件中插入当前的编译日期

__TIME__:在源文件中插入当前编译时间;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值