我試圖編譯從Boost.Preprocessor庫,是一個示例:在Visual Studio 2008中升壓預處理:樣品不工作
#include <boost/preprocessor/seq/insert.hpp>
#define SEQ (a)(b)(d)
BOOST_PP_SEQ_INSERT(SEQ, 2, c) // expands to (a)(b)(c)(d)
,我得到的錯誤error C2065: 'b' : undeclared identifier
是否存在與樣品有問題或者我錯過了什麼?
請注意:序列定義本身是可以的。爲了證明這一點,我編這個代碼:
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/seq/for_each.hpp>
#define SEQ (w)(x)
#define MACRO(r, data, elem) BOOST_PP_CAT(elem, data)
struct w_
{
int x;
};
void test()
{
BOOST_PP_SEQ_FOR_EACH(MACRO, _, SEQ);
x_.x = 3;
}
聲明:此代碼是跆拳道的代碼,我從來沒有打算用BOOST PP這樣:-)
那麼,哪個代碼會產生引用的錯誤? – UncleBens 2010-10-20 14:52:40