首页 > 解决方案 > 是否可以实现一个交换尾随括号表达式的宏?

问题描述

使用 c/c++ 预处理器可能会出现以下情况吗?

#define SWAP(...) ???

SWAP(1,2,3)(4,5)

// will expand to

{ 4,5 , 1,2,3 }

Boost.Preprocessor 和/或可变参数宏的任何使用都是合法的。

如果这是不可能的,为什么不呢?

请注意:尾括号是这个问题的重要组成部分。显然,可以使替代方案SWAP( (1,2,3) (4,5) )(例如https://godbolt.org/z/97EqxK

PS:非交换版本看起来像这样https://godbolt.org/z/u9kby3

标签: c++c-preprocessorboost-preprocessor

解决方案


推荐阅读