【发布时间】:2016-10-17 09:56:16
【问题描述】:
我有这个结构:
struct __attribute__((packed)) BabelPacket
{
unsigned senderId;
unsigned dataLength;
unsigned char data[0];
};
我要声明它:
BabelPacket *packet = reinterpret_cast<BabelPacket *>(new char[sizeof(BabelPacket) + 5]);
packet->senderId = 1;
packet->data = "kappa";
packet->dataLength = 5;
但是当我编译时出现这个错误:
error: incompatible types in assignment of ‘const char [6]’ to ‘unsigned char [0]’
packet->data = "kappa";
^
你知道我该怎么做吗? 而且我需要通过套接字发送这个结构,以便将对象返回到我的服务器中,所以我只能使用 C 类型。
【问题讨论】:
-
你不能在标准 C++ 中。
-
这适用于 C (like this) 但不适用于 C++。
-
你可以在那里使用指针并单独分配字符串。
-
C++ 不支持数组赋值。您不能将数组设置为等于任何值。所以
packet->data = "kappa";在 C 或 C++ 的规则下毫无意义。
标签: c++