c++ - 如果直接跟随形成有效标识符的字符,则宏变量不会扩展

标签 c++ c macros c-preprocessor

给定一个预处理器宏,例如

#define DECLARE(NAME) \
    int NAME;         \
    int NAME_2

Name_2 表示新标识符。是否可以扩展Name,以便

DECLARE(x);

变成

int x;
int x_2;

最佳答案

您可以使用##胶水:

#define DECLARE(NAME) \
   int NAME;         \
   int NAME##_2

关于c++ - 如果直接跟随形成有效标识符的字符,则宏变量不会扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49907716/

相关文章:

c++ - 用一个循环遍历二维数组

c - 在重叠区域安全使用 memcpy

c++ - 两个宏之间重复运算的效率

c++ - QDockWidgets 合并不正确

c++ - 自定义 apache2 模块将不会加载错误消息 "Can' t 定位 API 模块结构”

c++ - open gl基本程序报错?

c - BSD getmicrotime() 输出到 Excel 日期

macros - 有没有办法在 Rust 宏中优先模式匹配中缀操作?

c - 定义宏来计算多项式

c++ - 图像格式和无符号字符数组