我有一个C#背景.我非常喜欢像C这样的低级语言.
在C#中,struct默认情况下由编译器布局内存.编译器可以隐式地重新排序数据字段或填充字段之间的附加位.因此,我必须指定一些特殊属性来覆盖此行为以获得精确布局.
AFAIK,C struct默认情况下不重新排序或对齐a的内存布局.但是,我听说有一个很难找到的例外.
什么是C的内存布局行为?什么应该重新订购/对齐而不是?
我有一个函数UartSend()通过uart将数据发送到网络.它需要参数unsigned char和一个整数
UartSend(unsigned char *psend_data,int length);
Run Code Online (Sandbox Code Playgroud)
我想通过这个功能发送一个结构
#pragma pack(push, 1)
struct packet
{
int a;
char b[3];
...
}PacketData;
#pragma pack(pop)
Run Code Online (Sandbox Code Playgroud)
如何将此结构转换为unsigned char以通过UartSend发送此数据?谢谢..