|
|
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 `- D2. 一般用法* 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: D7 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( @
|
|