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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
1. 前言
+ W% Q2 W* i0 I% G) R' w

- E7 `0 x' Q1 ~" t* R! Q# E/ R0 [5 i使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.% ^+ e" F4 I2 B- K

9 f7 J( ]$ q. X- U3 `- D
2. 一般用法
* n$ R8 V* t8 J7 S% N
) [; k& U) j1 _, _; |% h
; n6 Q, J) s9 U" M
3. 注意事项4 f7 K0 m3 I# O& [* `
# A, I* B1 ~% d4 h

- S( V4 Z3 j0 y% Z+ f9 i  P7 c: k) D; ?
( i' u; {* X# v
* W$ j/ ~+ p% A+ O

4 L( Q0 d$ K5 F4 D& Y* `! i+ K- Z$ X7 ^( n3 m& n
3.1 举例- P, C  _; \( j' S4 H$ c3 W; M5 ~# g
  l* ?: f7 f0 ^' e6 r

* v: U  P0 w* f
; o5 T# r# v0 g5 s7 k$ M% q
0 j9 r! j3 u4 W6 [; a两句print会被展开为:
8 Q# C8 S. f' b$ B2 I6 f% C. [' {# @2 o3 y4 X8 |; r
# z: ?* ^: }/ I' b
" C9 t! g2 C" ~' N& f3 C

( l; A  U9 U7 z; b4 I! f
' Y8 o- \4 {0 V% i0 ^分析:
8 I# w% X1 k' Q$ J& f; }由于AGE是宏,且作为宏toString和conStr的参数,并且宏conStr和toString中均含有#或者##符号,所以A不能被解引用。导致不符合预期的情况出现。3 ?) n' L% N/ P& z0 z! j7 K
3.2 解决方案

& x7 R$ O  c3 E2 f' J
7 [- ~) w' h& M: R4 w: S) L; b7 H0 C8 A

% n5 V. L1 c9 l2 c; [. H3 E4 \- j+ I" I: i2 q* R

' R" ^3 b5 e! p* `- M9 y* T# R1 H" T结果:  T3 e1 O9 T9 t
3 _5 K$ s2 q' h7 I. y3 z
& i' ?5 Z3 S5 G) b+ G& K

& O! B! o' ]- s# t0 D6 m% T- i
& l6 b6 R- b% E  L; Q! K1 ~
6 H2 L) ~! U: D
7 J+ [4 F! M0 t/ y

2 f; k, G/ E6 E8 J$ a& O/ ?

+ _. \, |( {- {1 M' e/ H$ h/ H$ @5 j2 U' y  E: C" p

: E6 U% Z6 \4 B' A" T' l" t  t! ^; ]: t+ M( @
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-25 01:16 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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