ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
25 марта
1503793 Топик полностью
Nikolay_Po (06.03.2025 10:17, просмотров: 193) ответил Eddy_Em на Нормально, конечно. А еще, gcc позволяет вложенные функции (и я этим регулярно пользуюсь). А вот шланг, зараза, считает их недопустимыми…
Эдуард, скажи, как ты решаешь такую задачу: нужно иметь возможность обращаться к набору данных как к отдельным, именованным параметрам, так и как к массиву байт. Например: 
typedef union {
	struct __attribute__((packed)) {
		uint8_t CmdAddr;
		uint8_t Version;
		ADCstatus1_t Status;
		ADintErr_t Errors;
		uint8_t DataSize;
		uint8_t Data[ADCsmpDatMax];
	} N; //By name
	uint8_t Bytes[TxHeadSize + ADCsmpDatMax + CRC16size]; //As bytes
} SmpTxFrame_t; //Sample data transmit frame

SmpTxFrame_t Frame;

//...

if (Frame.N.Status.ADCrun) {
//ADC is running
} else {
//ADC is stopped
}


Тут я обращаюсь к параметрам, в том числе и к членам структур Status и Errors по имени через элемент союза N, а когда веду передачу и приём кадров, работают с данными как с массивом байт Bytes.

Но я объявляю союз, а не структуру, как ТС. И мне не очень удобно иметь в середине обращения по имени, лишнее ".N".

Можно ли опустить имя "N" для члена союза?