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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 人生的困境是什么?...原来是里面那个我受伤的我,软弱的我,惧怕的我...抑或是自私的我,虚荣的我,骄傲的我......
    占从Zoey阅读 719评论 0 0
  • 我们那时多年轻啊,谁的身体里没有一条青春的虫在拱动?谁不被那虫拱得心底作痒?一旦我们身体里那条青春虫子拱得紧了...
    阿飘飘飘呀飘阅读 1,501评论 0 4
  • 目标:1、希望孩子拥有更多朋友更加开心快乐!智慧多多!不计较!不抱怨!能够心平气和的说话!不着急!不上火!我俩不干...
    zl向日葵阅读 256评论 0 0
  • 早睡早起早锻练32/90,今早我睡完了半个小时,这应该是昨晩上迟了1个小时入睡的原因。因此,我没有去晨跑啦! 回到...
    UsanaCrystal阅读 189评论 0 0

友情链接更多精彩内容