2011-12-03 30 views
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完成嗎?

回答

2

您可以使用CL /E從命令行運行Visual Studio編譯器,以執行與gcc的-E(即預處理)等效的操作。我不知道從IDE本身做到這一點的方法。

正如@MooingDuck所說,您可以將預處理源輸出到可從IDE查看的可配置文件,儘管您無法將預處理輸出直接後臺打印到IDE輸出窗口AFAIK。

+1

在項目屬性中,有兩個選項,「預處理到文件」和「預處理文件的名稱」您必須打開文件隔離一次,雖然 –

+0

呃...我發現[/ P](http: //msdn.microsoft.com/en-us/library/8z9z0bx6(v=vs.80).aspx),它可以在項目內部使用,但是對於演示演示,它在/ obj文件夾中生成1600 kb .i文件e有很多空白......並且VS沒有爲它提供高亮度......( – myWallJSON

+0

@myWallJSON:那麼預處理輸出的設計不是可讀的;它只是下一階段編譯的中間步驟。 –

相關問題