Описание тега unions

The plural of a keyword in the C family of languages for declaring a union data type.
2 ответа

Доступ к одному и тому же члену различных структур

Отказ от ответственности: следующее пытается максимально упростить проблему. Первоначально переменная int x это структура, но я бы подумал, что это не важно здесь. Предположим, у нас есть две структуры в союзе (я не имею никакого влияния на это) typ…
28 мар '18 в 11:48
3 ответа

Могу ли я присвоить значение одному члену объединения и прочитать то же значение из другого?

В основном у меня есть struct foo { /* variable denoting active member of union */ enum whichmember w; union { struct some_struct my_struct; struct some_struct2 my_struct2; struct some_struct3 my_struct3; /* let's say that my_struct is the largest m…
10 дек '15 в 01:30
1 ответ

Как скопировать анонимный союз

У меня есть анонимный союз в структуре struct A { union { char c; double d; }; A(const A &a) { c = a.c; d = a.d; } }; Мне было интересно, как лучше определить его конструктор копирования. Нужно ли копировать все поля объединения? Я думаю, мы дол…
06 фев '16 в 01:32
1 ответ

Ошибка компиляции: переопределение имени объединения

У меня есть этот кусок кода здесь, и я получаю ошибку GCC: переопределение union semun в самом начале этого кода union semun { int val; /* Value for SETVAL */ struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */ unsigned short *array; /* Array f…
16 май '14 в 13:09
1 ответ

C++Builder 2007, Объединение и битовые поля

Размер этого объединения возвращает 16 байтов (в C++Builder 2007). typedef union { struct { unsigned Type:2; unsigned Prev:31; unsigned Next:31; unsigned SizeInBytes:32; }; } eMyUnion; Как я должен изменить это определение объединения, если я хочу s…
21 фев '13 в 11:35
3 ответа

Союз, хранящий несколько значений

Вот код: #include <iostream> union mytypes_t { char c; int i; float f; double d; } mytypes; int main() { mytypes.c = 'z'; mytypes.d = 4.13021; mytypes.f = 41.7341; cout << mytypes.d << endl; return 0; } Программа выводит 4.13021 (з…
19 авг '16 в 18:51
0 ответов

Значение унарного `&` применяется к члену профсоюза

Обычно в С, используя одинарный & Оператор в lvalue дает указатель, так что в любое время в течение времени жизни базового объекта, применяя унарный * указатель выдаст lvalue, эквивалентный оригиналу. Такое поведение по сути является смыслом &am…
23 апр '17 в 18:46
1 ответ

Псевдоним переменной структуры

Я пытаюсь создать псевдоним для переменной внутри структуры, как это: typedef struct { union { Vector2 position; float x, y; }; union { Vector2 size; float width, height; }; } RectangleF; (обратите внимание, что я не назвал союзы, поэтому мне не нуж…
02 июл '14 в 15:19
2 ответа

C++11 Функция "В инициализации класса" не работает для профсоюзов

Пример минимального кода: struct B { union U { struct S {} s; int i = 100; } u; }; Теперь, если мы объявим B obj; тогда obj.u.i назначается значение мусора вместо 100, Смотрите демо здесь. (Значение мусора отличается в зависимости от флагов оптимиза…
22 июл '13 в 14:33
2 ответа

Как обратиться к члену профсоюза внутри профсоюза?

Я пытаюсь сделать следующее: struct AlignedBuffer { union { unsigned int n[4]; unsigned char b[sizeof(n)]; }; }; Его производство: $ gcc -g3 -O1 -std=c99 -Wall -Wextra test.c -o test.exe test.c:13:32: error: use of undeclared identifier 'n' unsigned…
13 сен '14 в 23:52
1 ответ

Размер массива char внутри объединения не печатается правильно

union u { int a; float b; char c[10]; }; int main() { union u abc; printf("\n%d",sizeof(abc)); } Вывод: 12 Я ожидаю, что выход будет 10.sizeof(char) равен 1. Так что для 10 я ожидаю, что это будет 10. Может кто-нибудь объяснить мне, почему мы получа…
14 апр '17 в 17:01
1 ответ

F# универсальная функция фильтра списка разграниченных союзов

F# вопрос новичка. У меня есть список дискриминационных союзов, таких как: type Type1 = { name:string; id: int; } type Type2 = { x: float; y: float;} type Type3 = { x: float; naam:string} type Union1 = | T1 of Type1 | T2 of Type2 | T3 of Type3 let l…
06 дек '15 в 17:46
1 ответ

Используя объединение, могу ли я сравнить два двойных числа через unsigned int?

Имея следующие союзы: union {double first_d; uint64 first;}; union {double second_d; uint64 second;}; ... first_d = <a double value> second_d = <a double value> Имеет ли вывод следующие сравнения: if(first_d > second_d) // CASE 1 OUTP…
16 сен '12 в 21:40
2 ответа

Битовые поля и союзы в C, создающие проблемы

Я внедряю стандарт радиосвязи и столкнулся с проблемой союзов в структуре и объеме памяти. В приведенном ниже примере мне нужно, чтобы эта структура находилась в одном байте памяти (согласно стандарту радиосвязи), но в настоящее время она дает мне р…
21 ноя '12 в 12:18
2 ответа

Почему запись в объединение бит-поле-uint по ссылке дает неправильную инструкцию по сборке?

Сначала немного предыстории: Эта проблема возникла при написании драйвера для датчика в моей встроенной системе (STM32 ARM Cortex-M4). Составитель: ARM NONE EABI GCC 7.2.1 Наилучшим решением для представления регистра внутреннего контроля датчика бы…
25 янв '19 в 20:57
1 ответ

Objective-C KVO не работает с профсоюзами C

Мне нужно наблюдать свойства типа union в классе Objective-C, используя KVO, но, похоже, мне не повезло с этим. Я провел несколько экспериментов: все работает нормально, пока я использую C-структуру. Как только я заменяю структуру на объединение, ав…
12 янв '13 в 16:47
2 ответа

Меняется ли порядок байтов, является ли объединение более эффективным, чем битовые сдвиги?

Меня попросили принять вызов, чтобы изменить порядковый номер типа int. У меня была идея использовать битовые сдвиги int swap_endianess(int color) { int a; int r; int g; int b; a = (color & (255 << 24)) >> 24; r = (color & (255 &…
09 окт '14 в 16:18
1 ответ

CMSIS - периферийные определения - структуры с синтаксисом союзов?

Я перешел с 8-битных голых металлических регистров, и мне пришлось изучать новый C Cungfu, чтобы обернуть голову вокруг подхода CMSIS Core. У меня здесь есть фрагмент кода с уровня периферийного доступа от поставщика ARM Cortex M. Они создают эту ст…
15 янв '18 в 21:04
1 ответ

C преодоление ограничений на псевдонимы (союзы?)

Предположим, у меня есть пример исходного файла test.c, который я собираю следующим образом: $ gcc -03 -Wall test.c выглядит примерно так... /// CMP128(x, y) // // arguments // x - any pointer to an 128-bit int // y - any pointer to an 128-bit int /…
26 июн '11 в 21:17
3 ответа

Освободить / удалить объединение malloc/new Array в C/C++

Я работал и собирался использовать профсоюз. Я отказался от этого, потому что дизайн действительно требовал структуры / класса, но это в конечном итоге привело к следующему гипотетическому вопросу: Предположим, у вас есть союз, подобный этому надума…
29 июн '12 в 03:57