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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
1. 前言
# e0 M  p* h$ |. _" M0 ]3 U8 j

' T! @8 T9 B/ N# V. }使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.% J8 `7 o' ]$ Z) _# ]( T

" D. b  q3 ^' m8 {
2. 一般用法

3 \# p. e& Z* e& i+ u& L, A- \9 ]; E5 H0 H3 H% P

/ d1 F3 D1 b0 d& t3 I1 c0 s3. 注意事项: f6 ^- I# v+ B$ K
+ Z: i& ^# }0 o# N5 r' L
. ]8 a. @6 P4 D4 f6 x0 ]

0 F" b. r" {) Q  g" a8 h& W0 I1 i. B8 X1 G
( W% ]; A) c6 T- |' n5 F7 @

. y- Y, e% `* ~1 j
0 i% Y: {& c% B8 ^& {4 x3 _+ b3.1 举例2 R  _; q/ c& A$ {

: j1 g3 u! j# {" k
( y6 c" _: y4 j- I

& N2 @% O( F9 \( x# |
4 Q! M9 T; J! c/ S! Y' y; S0 N1 {两句print会被展开为:
2 G( A1 H$ n6 R# y8 O/ a3 H" Z/ d. L8 _2 B$ S; v4 o0 |
$ I  ~5 o0 i* q8 o% p
5 D9 A! ?/ M6 Z" q
# i9 G- c+ e" A" n, y; u# J
4 r' I2 v" Y" c( u- ^9 b* A- ?
分析:
+ {% T4 @& P2 V) D- B由于AGE是宏,且作为宏toString和conStr的参数,并且宏conStr和toString中均含有#或者##符号,所以A不能被解引用。导致不符合预期的情况出现。' o2 D& `. \9 r; q- I# _
3.2 解决方案
  t4 c* l9 d% c! X  t/ z

6 K! T3 |2 j+ S! O% f9 s8 [
! l/ p% |2 r% w$ v
! D, ^8 ]' r9 ?! a+ ]8 Y
# ^- f9 ?. b( u
' m! A. {/ d% C; i7 n, y8 l
结果:7 ~, v9 ?5 \3 S" U' q

' R0 G. l3 h6 U, `" _
; X$ v, F( D8 J4 i4 A( y
% [, P/ O- Y, G7 |. z
. z3 p9 [. ^# L- @2 @- X" \

6 M, c) S: Z0 I% J' e% q1 h0 ?

2 Z1 g9 M, _. d. ^7 w
% q6 a% `/ Y: p$ _) p: x$ T/ w% `

6 r* Z  y5 h$ L4 D- |
: t2 S  C. l! D4 v* T
+ G+ n( n# g& M$ W: P1 j' B4 \/ M! h/ ]; ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 22:52 , Processed in 0.234375 second(s), 26 queries , Gzip On.

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

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

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