C++ 将宏写为c++;功能
我有这个宏用于起始数据包C++ 将宏写为c++;功能,c++,macros,C++,Macros,我有这个宏用于起始数据包 #define BEGIN_PACKET_DEF(name, type) typedef struct name {\ int8_t header;\ static size_t size() { return sizeof(name); }\ name() { memset(this, 0, sizeof(name)); header = type; } 这是用来结束数据包的 #define END_PACKET_DEF(name) } name; 我想把它作为C
#define BEGIN_PACKET_DEF(name, type) typedef struct name {\
int8_t header;\
static size_t size() { return sizeof(name); }\
name() { memset(this, 0, sizeof(name)); header = type; }
这是用来结束数据包的
#define END_PACKET_DEF(name) } name;
我想把它作为C++函数来改变。 顾名思义,这是一个开始定义数据包的定义
BEGIN_PACKET_DEF
将自动添加int8_t头每个数据包中的代码>
用法示例:
BEGIN_PACKET_DEF(Name_struct,HEADER)
// some packet's data
END_PACKET_DEF(Name_packet)
我需要一些帮助来重写那些宏,如C++函数,和宏一样的效果,我不喜欢使用宏。
我只是不喜欢用宏
这种类型的开始
结束
宏对是它们罕见的有效用途之一,通常不能用函数替换它们以达到相同的效果
没有C++的C++中最接近的是定义一个变量模板结构,它将类型参数转发给<代码> STD::tuple < /C>。你可以在这里看到我的1如何做到这一点
1) 不要在意落选,这个问题是正确的,答案是好的。实际上,这已经用于生产。一个提示可能是要求编译器在预处理后显示源文本-因为它包含扩展的宏。。。