我想通过套接字发送结构。我不想使用IDL来指定结构,但可以更动态地进行操作。我想在代码中添加几个函数调用或宏调用,例如SendInt32(someInteger)
。该结构在代码中每个函数调用应包含一个字段。同一代码行(例如循环)的多次调用应更新同一字段。如何动态构建此结构?
还需要计算字段长度的总和。让我们忽略远程端点当前如何读取结构。
SendInt32(1); // (1)
SendInt16(2); // (2)
for (int i = 0; i < 10; i++)
{
SendInt32(i); // (3)
}
Send
函数的实现应产生如下结构:
struct {
uint16_t size = 10; // sizeof(first) + sizeof(second) + sizeof(third)
int32_t first = 1; // (1)
int16_t second = 2; // (2)
int32_t third = 9; // (3)
}
在C语言中有可能吗?
答案 0 :(得分:1)
您可以将数据存储在字节缓冲区中,例如:
size_t packet_size = 0;
unsigned char buf[1024];
void AccumulateInt32(int32_t n)
{
memcpy(buf + packet_size, &n, sizeof n);
packet_size += sizeof n;
}
然后您可以使用packet_size
和buf[]
进行发送。
练习时留有字节序,错误检查和更好的API。