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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
1. 前言, c% x6 [, N7 E% e4 I- l  Q
+ o( R7 x2 X3 w; ~# T4 i+ D
使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.7 n9 x! i, o$ w4 x) w- I
2 \4 Z+ l, e" G5 Y& X
2. 一般用法
' \  h- X* c% ]" f
, S- ?6 k/ M+ s/ {

- d! ~. N: E- v3 S1 }3. 注意事项
3 i. m" [9 [7 Z& p# `

  m! v, \7 P" E* j+ e& G3 A
! k( X" X( ]' ~; D: I7 E
$ x3 U; T5 D: q4 _/ `9 Z, r: S* d1 X; g- V
, {/ l/ L  r) u9 q* F8 }" j: g+ l

6 @6 S/ i& H4 D! B
6 S2 n: k' y6 _7 U$ T$ U# \, `1 G* y, R: q4 T% C
3.1 举例
) A4 N( C' ]" K* `' [1 f3 U" i# Z. O# q; c7 V) ?7 \! R
/ a% B, H/ P  ~0 S9 y( d

5 v/ K& f' C0 {: R' Z/ `- U/ c/ P/ M
两句print会被展开为:
  C6 O- j( h2 ~) j0 r
3 n0 r6 y4 I3 d: h7 E3 ~
3 \# G" i1 d- x  |

* w* s: c8 g# `% S2 W0 t0 Q  i; r0 o  @1 ?
0 O2 s0 g8 J" V, D8 G* s  E
分析: 5 j6 ~  P. _! M' a; d
由于AGE是宏,且作为宏toString和conStr的参数,并且宏conStr和toString中均含有#或者##符号,所以A不能被解引用。导致不符合预期的情况出现。
/ M( r5 t$ N; L7 P; H; Q$ Y- O3.2 解决方案
! X2 b! l3 \7 ^8 @' r' m, i

9 |8 e, t& m' g' v2 e4 x+ a/ _$ s# V" G- G
4 {8 ^; `9 X- L
2 F/ a. g3 J" O

* B' d1 b/ x% j7 B+ O结果:7 C; N- Y" N# t! I  f
0 x+ U, \+ y' L) a0 ^
" S1 D7 d; T, N$ e5 T% C+ V

/ M) a3 ~9 Z5 h
3 E9 v9 F' o( w- \+ w7 ~1 ^1 Q  }' j: j0 Y2 ~& |7 ?1 K$ d

+ N: ]$ Z4 {0 b$ I! W" P+ ]8 d5 \2 u# e& b# Z' A* Y# g2 T! z# s

% C, i0 k, k/ l: v! R6 y7 J! C/ [4 V3 @1 x  ?; z7 z
3 s" ?1 S3 U1 B* o
; a% x/ [* r5 ]* x0 y( Q* {
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 19:41 , Processed in 0.187500 second(s), 26 queries , Gzip On.

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

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

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