宏定义中,#:它是一个指示符,指示其后面的变量名替换变成一个字符串。##:它是一个连接符,表示它和他后面的变量名合并在一起。
下面举个例子来说明:
#include <iostream>
using namespace std;
#define PrintVar(v, index) cout << #v#index " is " << v##index << endl;
int main()
{
int i1 = 9, i2 = 2, i3 = 3;
PrintVar(i, 1);
PrintVar(i, 2);
PrintVar(i, 3);
// PrintVar(i, 4);
return 0;
}
运行上述代码,结果如下:
i1 is 9
i2 is 2
i3 is 3
Program ended with exit code: 0
如果把PrintVar(i, 4);反注释掉,则无法通过编译器:
因为使用了未定义的 i4 变量。
网友评论