Код: Выделить всё
struct S {
int length;
char data[100];
};
class C {
uint8_t buffer[10];
S& s = buffer[0];
};
Код: Выделить всё
class C {
uint8_t buffer[10];
S* s = (S*)buffer;
};
ОБНОВЛЕНИЕ:
Кажется, я недостаточно ясно объяснил свои намерения. Возможно, вам поможет фрагмент реального кода.
Код: Выделить всё
typedef struct BP_Error_t {
uint8_t cause;
uint8_t error;
} BP_Error_t;
typedef struct BP_Upload_Rq_t {
char file[FILE_NAME_LENGTH];
uint8_t size;
uint8_t chunk[MAX_FILE_CHUNK];
} BP_Upload_Rq_t;
typedef struct BusPacket_t {
uint8_t source;
uint8_t target;
uint8_t packet_id;
uint8_t length;
union {
BP_Error_t error;
BP_TPI_Poll_t tpi_poll;
BP_TPI_ACK_t tpi_ack;
BP_WiFi_Poll_t wifi_poll;
BP_WiFi_ACK_t wifi_ack;
BP_Erase_Rq_t erase_rq;
BP_Erase_Rsp_t erase_rsp;
BP_Upload_Rq_t upload_rq;
BP_Upload_Rsp_t upload_rsp;
BP_Download_Rq_t download_rq;
BP_Download_Rsp_t download_rsp;
BP_DFU_Rq_t dfu_rq;
BP_DFU_Rsp_t dfu_rsp;
};
} BusPacket_t;
Если я объявлю его как BusPacket_t, я потрачу много памяти. ни за что. Поэтому я подумал, что могу выделить 6-байтовый массив, а затем присвоить ему псевдоним структуры для облегчения доступа.
Подробнее здесь: https://stackoverflow.com/questions/787 ... h-an-array
Мобильная версия