2011-12-03 4 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

CL /E과 함께 명령 줄에서 gcc의 -E (예 : 전처리 됨)과 동일한 기능을 수행하려면 Visual Studio 컴파일러를 실행할 수 있습니다. IDE 자체에서이 작업을 수행 할 수있는 방법을 모르겠습니다.

@MooingDuck은 전처리 된 원본을 IDE 출력 창 AFAIK에 직접 스풀링 할 수는 없지만 IDE에서 볼 수있는 구성 가능한 파일로 출력 할 수 있습니다.

+1

프로젝트 속성에는 "파일 전처리"와 "전처리 된 파일 이름"이라는 두 가지 옵션이 있습니다. 파일을 별도로 열어야합니다. –

+0

... [/ P] (http : //msdn.microsoft.com/en-us/library/8z9z0bx6(v=vs.80).aspx) 프로젝트 내부에서 사용할 수 있지만 작동하는 데모는 1600KB의 .i 파일을/obj 폴더에 생성합니다. e는 너무 많은 공백을 가지고 있습니다 ... 그리고 VS는 hightlightning을 제공하지 않습니다 ... ( – myWallJSON

+0

@myWallJSON : 전처리 된 출력은 읽을 수 있도록 설계되지 않았으며 컴파일의 다음 단계를위한 중간 단계에 불과합니다. –