В дивайсе два однотипных канала, которые могут параметрироваться. Канал описывется структурой, в которой, помимо полей-параметров, имеются константные поля, описывающие привязку конкретного канала к железу, например
кнопки, леды, NSS ноги SPI, которые хотелось бы инициализировать при об'явлении переменной типа TChannel адресами соответсвующих пинов в bit-bang области. Нижеприведенный код (условный), компилятор проглатывает, но соответсвующие поля не инициализирует.
CODE
typedef struct _Channel{
unsigned long int * const NSS; // нога NSS
unsigned long int * const LEDR; // красный светодиод
unsigned long int * const LEDG; // зеленый светодиод
...
...
}TChannel;
TChannel Channel1 = {.NSS = GPIOA_PIN_1, .LEDR = GPIOC_PIN15, .LEDG = GPIOD_PIN9};
макросы типа GPIOx_PINy не привожу, в силу их очевидности, но в их работоспособности убедился экспериментально.
Подобный финт в IAR прокатывал, там в таких полях я даже const не использовал.
В ГСС пробовал и с const и без него, один х.
Чисто константные структуры инициализируются, да. А инициализировать часть полей неконстантной структуры не удается.
Во всех случаях речь идет об инициализации при об'явлении экземпляра типа TChannel;