Результаты поиска по запросу "strict-aliasing"
Почему оптимизация убивает эту функцию?
Недавно в университете мы читали лекцию о специальностях программирования на нескольких языках. Лектор записал следующую функцию: inline u64 Swap_64(u64 x) { u64 tmp; (*(u32*)&tmp) = Swap_32(*(((u32*)&x)+1)); (*(((u32*)&tmp)+1)) = ...
Строгий псевдоним C ++, когда не используется указатель, возвращаемый путем размещения
Может ли это привести к неопределенному поведению? uint8_t storage[4]; // We assume storage is properly aligned here. int32_t* intPtr = new((void*)storage) int32_t(4); // I know this is ok: int32_t value1 = *intPtr; *intPtr = 5; // But can one ...
Исправлена ошибка, из-за которой разыменовываемый указатель типа наказывался нарушением псевдонимов
Я пытаюсь исправить два предупреждения при компиляции конкретной программы с использованием GCC. Предупреждения: предупреждение: разыменование указателя типа-наказание нарушит правила строгого псевдонима [-Wstrict-aliasing] и два ...
What is the strict aliasing rule?
Когда спрашиваешь ообщее неопределенное поведение в C [https://stackoverflow.com/questions/98340/what-are-the-common-u ndefinedunspecified-behavior-for-c-that-you-run-into]Души более просвещенные, чем я говорил о строгом правиле псевдонимов. О ...
GCC: точность строгих предупреждений о псевдонимах
Я пытаюсь проверить часть своего кода на наличие строгих нарушений псевдонимов, но похоже, что я что-то упустил, пытаясь понять правило строгих псевдонимов. Представьте себе следующий код: #include <stdio.h> int main( void ) { unsigned long l; ...
Доступ к первому полю структуры через приведение C нарушает строгий псевдоним?
Этот код нарушает строгий псевдоним? struct {int x;} a; *(int*)&a = 3Говоря более абстрактно, допустимо ли приведение между различными типами, если примитивные операции чтения / записи являются правильными?
строгое наложение и выравнивание
Мне нужен безопасный способ для псевдонима между произвольными типами POD, в соответствии с ISO-C ++ 11, явно учитывая 3.10 / 10 и 3.11 из n3242 или более поздней версии. Здесь много вопросов о строгом псевдониме, большинство из которых касаются ...
Как разыграть sockaddr_storage и избежать нарушения правил строгого наложения имен
Я использую Руководство Биджа по работе с сетями и столкнулся с проблемой псевдонимов. Он предлагает функцию, которая возвращает адрес IPv4 или IPv6 определенной структуры: 1 void *get_in_addr( struct sockaddr *sa ) 2 { 3 if (sa->sa_family == ...
Нарушает ли это приведение указателей строгое правило наложения имен?
Это быстрая реализация с обратным квадратным корнем из Quake III Arena: float Q_rsqrt( float number ) { long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = * ( long * ) &y; // evil floating point bit level ...
gcc, строгие псевдонимы и ужасные истории
В НКА-строгий альясинг-и-кастинг-через-а-союз [https://stackoverflow.com/questions/2906365/gcc-strict-aliasing-and-casting-through-a-union] Я спросил, не сталкивался ли кто-нибудь с проблемами, связанными с профсоюзным наказанием через ...