Ответ 1
Используйте список инициализаторов:
U_U32_F u = { 0xffffffff };
Вы можете установить другие элементы, кроме первого, через
U_U32_F u = { .f = 42.0 };
Например, скажем, у нас есть союз
typedef union {
unsigned long U32;
float f;
}U_U32_F;
Когда объявляется переменная этого типа объединения, существует ли способ установить начальное значение?
U_U32_F u = 0xffffffff; // Does not work...is there a correct syntax for this?
Используйте список инициализаторов:
U_U32_F u = { 0xffffffff };
Вы можете установить другие элементы, кроме первого, через
U_U32_F u = { .f = 42.0 };
Попробуйте U_U32_F u = {0xffffffff};
Обратите внимание, что инициализация объединения каждого члена не работает на компиляторах pre-C99, из которых есть удручающее число. Например, текущий компилятор Microsoft C не поддерживает его. (Я смутно помню, что он даже не поддерживает инициализацию первого члена, которая восходит к K & R II, но я могу ошибаться в этом.)