⾼端技巧:怎样使⽤#define定义变量
Introduction
想在源⽂件⾥定义⼀个跟⾏号有关的变量,每次都⼿动输⼊实在是太慢了。本⽂介绍怎样使⽤宏定义来定义与⾏号有关的变量。
⽐如:我们想在源码的第10⾏定义A_10这种⼀个整形变量。
⽤宏定义来完毕使命
在宏定义中,标准C/C++中给出了两个特殊的操作符:#和##。
#是⽤于给红參数加⼊双引號;##⽤于链接两个宏參数。既然能够连接两个宏參数,那我们就能够链接⼀个⾸字母和⾏号作为⼀个总体了!于是,我们就这样写:
#define MM(A) A##__LINE__
int main(){
int MM(C);
}
编译后发现,我们定义的居然是C__LINE__这个变量。并⾮我们想要的!为什么呢?
由于编译器在预处理的时候并没有把__LINE__展开。⽽是把它看成了⼀个总体!怎么办?
我们能够通过再定义还有⼀个宏来先展开⾏号。然后在作为參数调⽤MM这个宏。
#define AA(B,C) B##C
#define BB(B,C) AA(B,C)
#define DD(A) BB(A,__LINE__)
int main(){
define的基本用法int DD(V);
}
OK了,我们成功定义了与⾏号有关的变量了!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论