[英]BOOST_PP_SEQ_ENUM on an empty sequence
我怎么能寫一個類似於BOOST_PP_SEQ_ENUM
的宏,但是要處理空序列,即
#define SEQ (a)(b)
MY_BOOST_PP_SEQ_ENUM(SEQ) // expands to a,b
#define SEQ
MY_BOOST_PP_SEQ_ENUM(SEQ) // expands to nothing
這里提出了一個解決方案,名為add #define BOOST_PP_SEQ_ENUM_0
。 它以“沒有空序列之類的東西”的評論被拒絕,但這似乎解決了我的問題。
您只需要將SEQ
定義為空序列:
#define SEQ ()
您可以直接使用BOOST_PP_SEQ_ENUM
。
在此處使用G ++ 4.7.1和VC 2010與Boost 1.47配合使用。
您可以使用此:
#define PP_SEQ_ENUM(x) BOOST_PP_CAT(PP_SEQ_ENUM_0 x, _END)
#define PP_SEQ_ENUM_0(x) x PP_SEQ_ENUM_1
#define PP_SEQ_ENUM_1(x) , x PP_SEQ_ENUM_2
#define PP_SEQ_ENUM_2(x) , x PP_SEQ_ENUM_1
#define PP_SEQ_ENUM_0_END
#define PP_SEQ_ENUM_1_END
#define PP_SEQ_ENUM_2_END
這應該適用於任何大小的序列(甚至大於256的序列)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.