升压预处理:样品不工作
问题描述:
我试图编译从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