Вопросы по теме 'strict-aliasing'

boost :: bind нарушает правила строгого псевдонима?
Используя Boost 1.43 и GCC 4.4.3, следующий код boost::bind(&SomeObject::memberFunc, this, _1)); Создает следующее предупреждение boost / function / function_base.hpp: 321: предупреждение: разыменование указателя с типом каламбура...
1004 просмотров
schedule 01.12.2023

Можно ли в этом случае использовать указатель на переменную-член?
В последнее время я освежал/обновлял свои знания C++, и изучение строгого псевдонима заставило меня немного опасаться приведения указателей одного типа к другому. Я знаю, что следующий пример кода работает на моем компиляторе, но я хочу убедиться,...
1779 просмотров
schedule 12.02.2024

гибкий массив в C и разыменование ошибки указателя типа
Когда я пытаюсь скомпилировать приведенный ниже код с помощью gcc -O3 -Wall -Werror -std=c99 main.c , я получаю сообщение об ошибке типа "разыменование указателя с каламбуром типа нарушит строгие правила сглаживания" в #3, но не в #2 или #1. Я...
261 просмотров

Бесполезный случай для ограничения
Насколько я понимаю, стандарт C99 предписывает, чтобы указатели на разные типы не имели псевдонимов (т.е. указывали на одну и ту же память). Ключевое слово restrict гарантирует компилятору, что две определенные переменные (одного и того же типа?)...
42 просмотров
schedule 21.01.2024

Как называется этот метод и нарушает ли он строгие правила псевдонимов или вызывает UB?
Я придумал код, который использует самореферентную структуру (первый элемент структуры — это указатель на функцию, которая принимает экземпляр структуры в качестве своего единственного аргумента). Было полезно передавать разрозненные подпрограммы...
193 просмотров

Ошибка строгого сглаживания для преобразования fp16 в fp32
У меня есть функция конвертации fp16 в fp32 static float fp16_to_fp32(const short in){ signed int t1, t2, t3; float out = 0; t1 = (in & 0x7fff) << 13 + 0x38000000; t2 = (in & 0x8000) << 16; t3 = in &...
42 просмотров
schedule 01.10.2022