c++ - 打包结构和不打包没有代码重复

标签 c++ c++11 network-programming bit-manipulation packed

我有这个代码:

// size probably 4 bytes
struct NotPacked
  {
  uint16_t first;
  uint8_t second;
  };

// size is 3 bytes
struct Packed
  {
  uint16_t first;
  uint8_t second;
  }__attribute__((packed));

我想使用相同的结构,有时是打包的,有时不是。 您知道如何编写这段代码来避免重复吗?

[编辑] 问题应该是:“.. 编写这段代码,尽可能避免代码重复”

[编辑2] 我已经尝试使用空类优化进行实验但没有成功

[编辑3] 添加了基本示例:

  Packed packet;
  receivePacketFromNetwork(&packet); // Fill the structure with data coming from the network
  NotPacked notPacked = packedToUnpacked(packet); // convert packed structure to unpacked
  processUnpacked(notPacked); // Do a lot of computations

最佳答案

I'd like to use the same structure, sometimes as packed, sometimes not. Do you know any way to write this

没有。

您究竟如何期望用相同的代码定义两个完全不同的内存布局?

关于c++ - 打包结构和不打包没有代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56738169/

相关文章:

c++ - 卸载注入(inject)的 DLL 时,FreeLibraryAndExitThread 使程序崩溃

c++ - 在结构中调用 lambda 函数

c++ - 将 boost::array<> 打印到标准输出

Java UDP编程

控制每个请求的名称解析服务器 (DNS) 地址

java - 监控两个节点之间的可用网络带宽的最佳方法是什么?

c++ - VS2008 速成版和资源

c++ - C++ 分配器的 std::align_val_t 的有效对齐值是多少?

C++ 将强类型基类与 CRTP 和返回值类型推导混合

c++ - 有没有办法在 xcode 上使用 c++0x?我想使用 gcc 4.4 或更高版本