簡體   English   中英

BOOST_PP_SEQ_ENUM空序列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM