首页 > 代码库 > 高端技巧:怎样使用#define定义变量
高端技巧:怎样使用#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(){
int DD(V);
}
OK了,我们成功定义了与行号有关的变量了!
高端技巧:怎样使用#define定义变量
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。