#define GET_P3(p1, p2, p3) p3
// 根据参数个数选择para_0,还是para_1,,##__VA_ARGS__(##后没有内容时,会删除前面的空格)
#define SELECT_01_PARA(para_0, para_1, ...) GET_P3(,##__VA_ARGS__, para_1, para_0)
#define SELECT(...) SELECT_01_PARA(123, 456, ##__VA_ARGS__)
// 使用
SELECT();
---> SELECT_01_PARA(123, 456)
--->GET_P3(, 456, 123)
--->123
SELECT(1);
---> SELECT_01_PARA(123, 456, 1)
--->GET_P3(, 1, 456, 123)
--->456
SELECT(1, 2);
---> SELECT_01_PARA(123, 456, 1, 2)
--->GET_P3(, 1, 2, 456, 123)
--->2 //不符合预期
可以在此基础上扩展,实现多参数的自由选择