c/c++宏展开规则

最近利用visual studio 2019研究了一下宏展开的规则,作为宇宙第一IDE,非常好用,下面来总结一下学习成果。

总体概述

在举例分析之前,先对规则进行一个总体的概述。总的来说,宏展开的规则有以下几点:

  1. #表示生成字符串,将一个参数转换为一个字符串;
  2. ##表示连接,将两个token连接成一个;
  3. 宏不能自引用;
  4. 先展开#,再展开##,再展开宏参数,最后将展开的宏参数代入。

例子

下面通过一些例子来分析上面的规则,方便理解。

#表示生成字符串

在这里插入图片描述
注意,上图中,“扩展到:”后面会直接给出宏展开的结果,非常方便。

#后面只能跟宏参数

如果宏定义中,没有在#后跟上宏参数,vs会给出错误信息:
在这里插入图片描述

##表示连接

在这里插入图片描述

宏不能自引用

链接

先解析#再解析##

在这里插入图片描述

先解析#和##再解析宏参数,最后展开宏


版权声明:本文为KeLiaoo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。