在#define
中,可以使用A ## B
连接预处理程序变量并定义标识符。
#define ADD_UNDERSCORE(X) X##_
/* ADD_UNDERSCORE(n) -> n_ */
是否有#define的等效左侧? E.g。
#define A a
#define B b
#define A##B(X) X
/* ab(n) -> n */
答案 0 :(得分:4)
没有。在宏定义中,define
之后的第一个标记必须是标识符((draft) ISO/IEC 9899;1999,6.10,第149页)。
没有其他#define
指令的预处理可以使标识符脱离其他内容。特别是,该标准规定了(6.10.3):
预处理指令中的预处理标记不受宏的限制 扩展,除非另有说明。
宏名称没有“另有说明”。