Что такое аналог Visual Studio 2010 для `g ++ -e file.cxx`?
-
27-10-2019 - |
Вопрос
Есть ли какие -либо, можно увидеть результаты в IDE?
Поэтому я пробую образец кода, который использует препроцессор Boost и показан здесь (! Предупреждение - русский):
#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 (Ultimate), мне интересно, как увидеть мой код, когда IDE видит его - означает с моим определением, превращенным в код. Можно ли это сделать внутри IDE, можно ли это сделать из VS Consol?
Решение
Вы можете запустить компилятор Visual Studio из командной линии с CL /E
сделать эквивалент GCC -E
(т.е. предварительно). Я не знаю, как сделать это из самой IDE.
Как говорит @mooingduck, вы можете вывести предварительно обработанный источник в настраиваемый файл, который вы можете просмотреть из IDE, хотя вы не можете получить предварительно обработанный вывод, чтобы выпустить непосредственно в окно вывода IDE AFAIK.