C/C++中宏定义有#最常见的用法就是用在宏定义语句的开头(如#define、#ifdef等),用来标识一个宏定义语句。除此之外,#还有两个比较重要的用法:
-
"#" 用来将标识符字符串化
-
"##" 连接两个标识符
标识符字符串化
所谓标识符就是宏的参数
#include <iostream>
# define LOG(ARG) cout << #ARG << " = " << ARG << endl;
using namespace std;
int main()
{
int a = 1;
int b = 2;
LOG(a+b);
return 0;
}
打印结果是:
a+b = 3
连接两个标识符
#define PARAMS(TYPE, ARG) TYPE TYPE##_##ARG
PARAMS(int, cellnum); // 相当于 int int_cellnum;
PARAMS(double, salary); // 相当于 double double_salary;