На самом деле у меня есть некоторые трудности в C, чтобы привести беззнаковую переменную int к типу объединения, который объявлен в объявлении типа структуры.
Мне нужно установить переменную таким же образом, как при записи поля объединения, определенного в структуре.
Декларация во включенном заголовочном файле:
typedef struct {
[...]
union {
unsigned long COMPLETE_VALUE;
struct {
unsigned long UPPER:16; /* [15:0] */
unsigned long LOWER:16; /* [31:16] */
} SUB_STRUCT;
} UNION;
[...]
} STRUCT_TYPE;
Переменная в исходном файле c:
STRUCT_TYPE *pStructure; /* the reference structure */
unsigned long dummyVar; /* dummy variable */
/* writing the upper field in the structure */
pStructure->UNION.SUB_STRUCT.UPPER = some_value;
Вопрос:
Можно изменить значение "dummyVar", используя внутренние типы объединения типа структуры STRUCT_TYPE?
Можно ли привести переменную к объединению, определенному внутри структуры и имеющему доступ к полю подструктуры?
Было бы очень полезно, если бы переменную можно было изменить, как показано ниже, или аналогичным образом:
((<CAST>) dummyVar).UNION.SUB_STRUCT.UPPER = some_value;
Примечания:
- Объявление STRUCT_TYPE не может быть изменено.
- Структура pStructure не может быть написана или отредактирована.
- Поведение доступа pStructure должно быть воспроизведено в dummyVar.
Возможно ли это в любом случае в C?
Заранее спасибо!
Martin