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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
1. 前言
. m. R) F. e0 a+ }

9 O! `" y6 ?2 G# Q. \: L使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起./ x8 @+ X# s3 X" H

, p+ M% }  W, R, I( X# \9 Q4 l
2. 一般用法
$ P( u, R% F0 g5 Q7 I, ?: U

# |+ d( F9 c: @' j
  F. ]1 _) {( T6 c7 [" P/ C( V8 z
3. 注意事项
7 f9 h! J' m# P

; a2 @5 \! g$ F' Q- f0 E# z+ [0 R$ _( u9 o' G3 |
" ^( F. i4 F8 n1 I& P# ?
# J. O3 i% S$ Z4 N  i
7 m, @" b- H: s& F3 w

# }* a& b  z0 W; \: i6 [
: w% M) ^# x4 ?  w- l3.1 举例0 b1 O; P- O9 @! `9 g5 n
; v7 R/ |% q9 N5 N9 B6 c6 Z

' z; G2 R* @: r4 M# Y
! L7 V, g# X6 F" s* |+ _8 F; I2 ^( I+ x- F8 I  W
两句print会被展开为:, n+ F3 P- a+ |# L- H
9 G: I  l& H2 T3 b9 ]0 r5 Z
, |3 |% E' Y* y+ ~% @% x5 S9 N

+ [& M# U5 h* W+ _9 D+ U' w+ U0 y% a: P6 I* o) V& f8 Q
2 d+ q) }9 |1 D' e& U" I
分析:
+ _- {" F4 Z7 i, I3 h6 s由于AGE是宏,且作为宏toString和conStr的参数,并且宏conStr和toString中均含有#或者##符号,所以A不能被解引用。导致不符合预期的情况出现。
$ q# U6 g/ {/ @3.2 解决方案

# B' k. q+ t0 C. E  m! x) W2 z$ o& r3 c! Q% c8 h
1 _" u, Y' N1 U% k0 @3 K2 \
# E8 X8 d( ?  G! T
: T6 K; ^8 \& l! }1 h" W. }

- h6 }; G, n" l# T* w. N+ b结果:+ Q- O. E- H& l- X
8 S7 C/ q; M/ S5 i  q8 e6 D/ s$ }

% V1 M7 K- w; m  r; L/ [7 n
; o3 N8 Z4 Q! Y. Q- R

  w2 a2 t; h; |9 G! F$ ]1 e; M+ ?- t& m6 h+ i6 ?3 j
% X+ u7 ~5 B9 i# O

! n: g2 b" p7 b$ \6 c

+ m" K& S  M8 M
( J( X# q, L" R4 W; c3 V: e+ O3 \
; l, w8 L& f3 L$ |9 v# F' |5 |. ]) f$ s* ^. J
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-2 03:06 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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