2011-12-03 15 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は、私はIDEがそれを見ていると私のコードを参照する方法を疑問に思うVS2010(究極)である - 私は、コードになって定義するとmeanig 。それはIDEの内部で行うことができます、それはVSのコンソールから行うことができますか?

答えて

2

Visual StudioコンパイラをコマンドラインからCL /Eで実行すると、gccの-E(つまり前処理済み)と同等の処理を実行できます。私はIDE自体からこれを行う方法を知らない。

@MooingDuckによれば、前処理された出力をIDE出力ウィンドウAFAIKに直接スプールすることはできませんが、IDEから表示できる構成可能なファイルに前処理されたソースを出力できます。

+1

"ファイルへの前処理"と "前処理されたファイルの名前"という2つのオプションがあります。ファイルを別々に開く必要があります。 –

+0

... [/ P](http: //msdn.microsoft.com/en-us/library/8z9z0bx6(v=vs.80).aspx)プロジェクトの内部で使用できますが、動作しますがデモ用には1600 KBの.iファイルが/ objフォルダに生成されますeは非常に多くのブランクを持っています...そしてVSはhightlightningを提供していません...( – myWallJSON

+0

@myWallJSON:前処理された出力は読み込み可能に設計されておらず、コンパイルの次の段階の中間段階にすぎません。 –

関連する問題