Вопросы по теме '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 просмотров
schedule
03.03.2024
Бесполезный случай для ограничения
Насколько я понимаю, стандарт C99 предписывает, чтобы указатели на разные типы не имели псевдонимов (т.е. указывали на одну и ту же память). Ключевое слово restrict гарантирует компилятору, что две определенные переменные (одного и того же типа?)...
42 просмотров
schedule
21.01.2024
Как называется этот метод и нарушает ли он строгие правила псевдонимов или вызывает UB?
Я придумал код, который использует самореферентную структуру (первый элемент структуры — это указатель на функцию, которая принимает экземпляр структуры в качестве своего единственного аргумента).
Было полезно передавать разрозненные подпрограммы...
193 просмотров
schedule
29.03.2024
Ошибка строгого сглаживания для преобразования 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