美文网首页C/C++编程
c++宏定义中的#和##

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

作者: 雨幻逐光 | 来源:发表于2018-10-23 10:34 被阅读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 变量。

    相关文章

      网友评论

        本文标题:c++宏定义中的#和##

        本文链接:https://www.haomeiwen.com/subject/hveozftx.html