gpt4 book ai didi

c++ - `g++ -E file.cxx` 的 Visual Studio 2010 模拟是什么?

转载 作者:行者123 更新时间:2023-11-30 04:31:07 25 4
gpt4 key购买 nike

有没有,我们可以在IDE中看到结果吗?

所以我尝试使用 boost 预处理器和 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 看到的那样查看我的代码 - 意味着我的定义变成了代码。可以在 IDE 中完成吗,可以从 VS consol 中完成吗?

最佳答案

您可以使用 CL/E 从命令行运行 Visual Studio 编译器,以执行与 gcc 的 -E 相同的操作(即预处理)。我不知道有什么方法可以从 IDE 本身执行此操作。

正如@MooingDuck 所说,您可以将预处理后的源输出到一个可配置文件,您可以从 IDE 中查看该文件,尽管您无法将预处理后的输出直接假脱机到 IDE 输出窗口 AFAIK。

关于c++ - `g++ -E file.cxx` 的 Visual Studio 2010 模拟是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8369432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com