找回密码
 注册
关于网站域名变更的通知
查看: 435|回复: 1
打印 上一主题 下一主题

C语言中"#"和"##"的用法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-12-1 15:39 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
1. 前言
5 e0 }: @4 x. ^0 U; l

3 Q2 U$ A' `" C) A6 P% P& Z使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.
' {. S2 m  @" \& S- ^+ h, s/ t
1 Q) d& T% b8 {# w
2. 一般用法
5 U1 D6 F7 h3 a4 u6 D
0 i, v4 \/ m* [5 o( a: m
4 A8 P5 T3 C  b4 L. ]2 x
3. 注意事项
/ T8 ^1 p2 Y9 e1 Y/ b3 E& K* p
0 Q2 O* ~8 r8 z5 |
/ m! ]) L& [" U5 j: ]1 p, @% i

9 R2 j/ n! L0 z! V" j9 F/ D) p7 e" y, ]6 i, W
( A+ V7 s8 }4 c. ^& U

: K4 l* {$ C- r7 F. m1 S
" `7 H$ S! z, Y6 T3.1 举例9 G+ Z: S6 ^2 |3 T4 K
' w+ X! S2 s, A% Q9 r, G4 R* y
/ }: m2 v& J; c; n( _' X  D2 ^
! K/ V8 d) m) |1 M; M

3 J1 z  m% e9 r: {" h+ S两句print会被展开为:
2 W, M% Z% |6 Q. q  v( n
- x/ Z' s2 c' ?
* z; z- y6 G# i$ _/ f6 C" b! Y( k
5 c, q, R" Q# c

4 b3 x1 T7 [$ H4 X% {4 v2 c+ \  A6 q
分析: 4 j1 o& `/ e. h4 S
由于AGE是宏,且作为宏toString和conStr的参数,并且宏conStr和toString中均含有#或者##符号,所以A不能被解引用。导致不符合预期的情况出现。
* b* \+ _/ X& S* `) K& q- h5 l3.2 解决方案

) Y( @& U2 b  U, s( S, }% }. a
+ s; B' X3 U( @' y) {

7 y3 T8 d0 J, G8 {; M
1 v! Y8 i) G& @" K9 W; X* p1 [; l) X4 S
结果:
0 t  c2 C) r+ f& \
8 H; e" U! P# l9 v8 Y5 m% C) M6 O) Y6 o# V# s
- Q! a" ]  V: _$ w, [$ }/ M

' ?0 ?8 c, s- V: ~- m
) F0 f! x+ }( t

  y$ L3 ?+ y; p# |" k* e3 r6 o+ U/ w+ O/ m4 y1 X' o

" @! q  H5 N5 p$ ]* D" P, a8 J) X9 O1 F2 _* r
9 \5 j1 |/ T7 s& r: s5 W3 K& V- Z
' M& J1 t7 o& z; c- S
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 23:38 , Processed in 0.171875 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表