将宏写成c++函数

Write macro as c++ function

本文关键字:c++ 函数      更新时间:2023-10-16

我有这个宏开始数据包的

#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 header;

示例用法:

    BEGIN_PACKET_DEF(Name_struct,HEADER)
 // some packet's data
   END_PACKET_DEF(Name_packet)

我需要一些帮助来将这些宏重写为c++函数,并实现与宏相同的效果,我只是不喜欢使用宏。

我就是不喜欢用宏。

这种BEGIN_ - END_型宏对是它们少有的有效用途之一,一般不能用函数代替它们来达到同样的效果。


在没有宏的c++中,最接近的方法是定义一个可变的模板结构体,它将类型参数转发给std::tuple。你可以在这里看到我以前的问题1如何做到这一点。

1)不要在意是否有人投了反对票,这个问题是有效的,而且答案是好的。