高端技巧:如何使用#define定义变量
2024-08-24 22:50:41
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了,我们成功定义了与行号有关的变量了!
最新文章
- sshpass----------------sshfs--sftp(sublime)
- C——malloc &; free(转载自bccn C语言论坛)
- Github for Windows使用介绍
- [LeetNode]Sort List
- eclipse内使用tomcat项目究竟被部署到了哪里
- Linux-ubuntu
- Java集合类之HashMap
- CSS学习之盒子模式
- 【转】android 开发 命名规范
- 贪心+树状数组维护一下 Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) D
- Node.js JXcore 打包
- 存储与服务器的连接方式对比(DAS,NAS,SAN)
- css-animate制作列表鼠标移动覆盖透明层
- SQL-11 获取所有员工当前的manager,如果当前的manager是自己的话结果不显示
- 2018.12.21 bzoj3238: [Ahoi2013]差异(后缀自动机)
- iOS下载图片失败
- 【转】java基本数据类型vs封装数据类型
- windows下python管理右键菜单
- Apache配置支持目录浏览
- ArcGIS ArcMap 问题(ArcMap闪退、cx_oracle安装不上)
热门文章
- Angular CLI 安装
- 重拾Python(4):Pandas之DataFrame对象的使用
- linux 基本使用命令
- 机器学习基石:09 Linear Regression
- PHPCMS v9.5.8-设计缺陷可重置前台任意用户密码
- [SDOI 2013]方程
- [SDOI 2017]新生舞会
- Codeforces Round #430 B. Gleb And Pizza
- bzoj4559[JLoi2016]成绩比较 容斥+拉格朗日插值法
- C语言程序设计第三次作业——选择结构(1)