Объединение может быть инициализировано в объявлении?

Например, скажите, что у нас есть объединение

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?
26
задан timrau 14 August 2012 в 23:55
поделиться

3 ответа

Используйте список инициализатора:

U_U32_F u = { 0xffffffff };

Вы можете установить других участников, чем первый через

U_U32_F u = { .f = 42.0 };
33
ответ дан 28 November 2019 в 07:28
поделиться

Попробуйте u_u32_f u = {0xffffffff};

3
ответ дан 28 November 2019 в 07:28
поделиться

Обратите внимание, что инициализация на каждый член союза не работает на компиляторах pre-C99, из которых есть угнетающее число. Например, текущий компилятор Microsoft C его не поддерживает. (Смутно вспоминаю, что он даже не поддерживает инициализацию для первого члена, которая восходит к K&R II, но я могу ошибаться в этом)

.
3
ответ дан 28 November 2019 в 07:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: