我们可以使用C预处理器##运算符粘贴3个标记吗?
似乎可以定义一个宏来连接 3 个标记为:
#define concat3(a,b,c) a##b##c
中间令牌(例如由生成的令牌a##b或b##c必须是有效的预处理器令牌)是否可以concat3(.,.,.)成功粘贴到所有符合要求的实现上?(1)
(1) 许多编译器支持..作为 case 范围的标记,这使其成为有效标记,但是 C 标准没有定义这个标记,那么concat3()宏会在不支持它的架构上失败吗?
似乎可以定义一个宏来连接 3 个标记为:
#define concat3(a,b,c) a##b##c
中间令牌(例如由生成的令牌a##b或b##c必须是有效的预处理器令牌)是否可以concat3(.,.,.)成功粘贴到所有符合要求的实现上?(1)
(1) 许多编译器支持..作为 case 范围的标记,这使其成为有效标记,但是 C 标准没有定义这个标记,那么concat3()宏会在不支持它的架构上失败吗?