Что такое аналог Visual Studio 2010 для `g ++ -E file.cxx`? - PullRequest
1 голос
/ 03 декабря 2011

Есть ли, мы можем увидеть результаты в IDE?

Поэтому я пробую пример кода, который использует препроцессор boost и здесь отображается (! 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 - значит, мое определение превратилось в код.Это можно сделать внутри IDE, это можно сделать из VS consol?

1 Ответ

2 голосов
/ 03 декабря 2011

Вы можете запустить компилятор Visual Studio из командной строки с помощью CL /E, чтобы сделать эквивалент -E gcc (то есть предварительно обработанным).Я не знаю способа сделать это из самой IDE.

Как говорит @MooingDuck, вы можете вывести предварительно обработанный источник в настраиваемый файл, который вы можете просмотреть из IDE, хотя вы не можете получитьпредварительно обработанный вывод для буферизации непосредственно в окно вывода IDE AFAIK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...