C/C++编程

c++宏定义中的#和##

2018-10-23  本文已影响0人  雨幻逐光

宏定义中,#:它是一个指示符,指示其后面的变量名替换变成一个字符串。##:它是一个连接符,表示它和他后面的变量名合并在一起。
下面举个例子来说明:

#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 变量。

上一篇下一篇

猜你喜欢

热点阅读