Результаты поиска по запросу "unions"
Конечно, есть и другие способы проверки порядка байтов (ваш метод - один из них). Что меня интересует, является ли фрагмент 1 допустимым в C или C ++? Из небольшого прочтения, которое я сделал из StackOverflow, я заключаю, что фрагмент 1 может быть реализацией, определенной в C, а это UB в C ++ (я могу ошибаться.).
бъединения запись в один член и чтение из другого (кроме массива char) - это UB. //snippet 1(testing for endianess): union { int i; char c[sizeof(int)]; } x; x.i = 1; // writing to i if(x.c[0] == 1) // reading from c[0] ...
будет скомпилировано в
отрим следующую структуру: struct Vector4D { union { double components[4]; struct { double x, y, z, t; } Endpoint; }; };Мне кажется, что я видел нечто подобное в структуре IPAddress WinApi. Идея состоит в том, чтобы дать мне возможность ...
Вопросы относительно C ++ non-POD союзов
C ++ 11 дал нам возможность использовать не-POD типы внутри союзов, скажем, у меня есть следующий фрагмент кода; union { T one; V two; } uny;Где-то в моем классе, только один участник будет активен одновременно, теперь мои вопросы довольно ...
Я должен был указать: возникнет ли проблема, если я напишу в первое поле и прочту из второго? Я собирался задать этот вопрос, но я почти уверен, что он будет закрыт, будучи его дубликатом.
й раз, когда я вижу примеры объединения, они всегда бывают разных типов. Например, из MSDN: // declaring_a_union.cpp union DATATYPE // Declare union type { char ch; int i; long l; float f; double d; } var1; // Optional declaration of union ...
Может ли союз быть шаблонным?
Кажется, союзы могут быть шаблонизированы в C ++ 11, они используются, например, эталонная реализация std :: option [https://github.com/akrzemi1/Optional/blob/master/optional.hpp]. Это было возможно до c ++ 11?
ты должен написать
от вопрос уже есть ответ здесь: Можно ли инициализировать объединение в декларации? [/questions/2148989/can-a-union-be-initialized-in-the-declaration] 3 ответаЕсли этоstruct тогда это можно сделать *p = {var1, var2..};Но, похоже, это не ...
+1 На самом деле одно место, где я использовал void указатель, было подходящим для использования интерфейса класса .. выглядит намного лучше после редактирования!
у код, и до сих пор я использовал такие структуры: struct s{ enum Types { zero = 0, one, two }; unsigned int type; void* data; }Мне нужна была некоторая общая структура для хранения данных из разных классов, и я хотел использовать ее в std :: ...
Спасибо за ваши предложения. Я пробовал это на множестве примеров и смотрел, что размер объединения эквивалентен (размер максимального элемента) + отступ (в зависимости от размера самого высокого используемого типа данных).
я печатаю размер союза, как это: union u { char c[5]; int i; } un;используя это: int _tmain(int argc, _TCHAR* argv[]) { printf("size of union = %d ",sizeof(un)); return 0; }Я получаю ответ 8 с использованием Visual C ++, но я ожидал ...
-1 Это неправильно для машин с прямым порядком байтов (например, x86). Пожалуйста, не используйте объединение для преобразования между машинными словами и байтами, это плохо для переносимости.
примеры профсоюзов, не для того, чтобы понять, как работает профсоюз, надеюсь, я делаю, а чтобы понять, какие хакерские действия делают люди с профсоюзом. Так что не стесняйтесь поделиться своим союзом взломать (с некоторыми объяснениями, ...
размер объединения в C / C ++
Каков размер объединения в C / C ++? Это размер самого большого типа данных внутри него? Если так, как компилятор вычисляет, как переместить указатель стека, если активен один из меньших типов данных объединения?