1
有沒有,我們可以在IDE中看到結果嗎?「g ++ -E file.cxx」的visual studio 2010模擬器是什麼?
所以我嘗試使用的代碼示例升壓預處理器和is shown here (!warning - russian):
#include <boost/preprocessor.hpp>
#include <iostream>
#include <string>
#include <map>
#include <vector>
#define DEFINE_OUR_STRUCT(name, seq) DEFINE_OUR_STRUCT_I(name, seq)
#define DEFINE_OUR_STRUCT_I(name, seq) \
struct name { \
DEFINE_OUR_STRUCT_ENUM_FIELDS(seq) \
\
template <typename functor> \
void apply(Functor functor) { \
DEFINE_OUR_STRUCT_ENUM_APPLY_FIELDS(functor, seq) \
} \
};
#define DEFINE_OUR_STRUCT_EXTRACT_TYPE(tuple) \
BOOST_PP_TUPLE_ELEM(2, 0, tuple)
#define DEFINE_OUR_STRUCT_EXTRACT_NAME(tuple) \
BOOST_PP_TUPLE_ELEM(2, 1, tuple)
#define DEFINE_OUR_STRUCT_ENUM_FIELDS(seq) \
BOOST_PP_SEQ_FOR_EACH( \
DEFINE_OUR_STRUCT_ENUM_FIELDS_OP, ~, seq)
#define DEFINE_OUR_STRUCT_ENUM_FIELDS_OP(z, data, el) \
DEFINE_OUR_STRUCT_EXTRACT_TYPE(el) \
DEFINE_OUR_STRUCT_EXTRACT_NAME(el);
#define DEFINE_OUR_STRUCT_ENUM_APPLY_FIELDS(ft, seq) \
BOOST_PP_SEQ_FOR_EACH( \
DEFINE_OUR_STRUCT_ENUM_APPLY_FIELDS_OP, ft, seq)
#define DEFINE_OUR_STRUCT_ENUM_APPLY_FIELDS_OP(z, ft, el) \
ft(DEFINE_OUR_STRUCT_EXTRACT_NAME(el));
//this
DEFINE_OUR_STRUCT(first_struct,
((int , id))
((std::vector<char> , data))
)
// shall turn into
/*
struct first_struct {
int id;
std::vector<char> data;
template <typename Functor>
void apply(Functor functor) {
functor(id);
functor(data);
}
};
*/
// ...And probably shall not give as many errors as it does...
int main()
{
return 0;
}
我的IDE是VS2010(終極),我不知道怎麼看我的代碼IDE看到它 - 我的限定化作代碼meanig 。它可以在IDE內完成,可以通過VS CONSOL完成嗎?
在項目屬性中,有兩個選項,「預處理到文件」和「預處理文件的名稱」您必須打開文件隔離一次,雖然 –
呃...我發現[/ P](http: //msdn.microsoft.com/en-us/library/8z9z0bx6(v=vs.80).aspx),它可以在項目內部使用,但是對於演示演示,它在/ obj文件夾中生成1600 kb .i文件e有很多空白......並且VS沒有爲它提供高亮度......( – myWallJSON
@myWallJSON:那麼預處理輸出的設計不是可讀的;它只是下一階段編譯的中間步驟。 –