相关疑难解决方法(0)

C中的结构内存布局

我有一个C#背景.我非常喜欢像C这样的低级语言.

在C#中,struct默认情况下由编译器布局内存.编译器可以隐式地重新排序数据字段或填充字段之间的附加位.因此,我必须指定一些特殊属性来覆盖此行为以获得精确布局.

AFAIK,C struct默认情况下不重新排序或对齐a的内存布局.但是,我听说有一个很难找到的例外.

什么是C的内存布局行为?什么应该重新订购/对齐而不是?

c struct memory-layout

76
推荐指数
3
解决办法
9万
查看次数

将C结构转换为unsigned char

我有一个函数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发送此数据?谢谢..

c casting structure pragma

1
推荐指数
1
解决办法
6293
查看次数

标签 统计

c ×2

casting ×1

memory-layout ×1

pragma ×1

struct ×1

structure ×1