5
ответов

gcc, строгое искажение, и бросающий через объединение

У Вас есть какие-либо страшные истории для сообщения? Руководство GCC недавно добавило предупреждение относительно - fstrict-искажение и бросок указателя через объединение: [...] Беря адрес, бросая получающееся...
вопрос задан: 1 October 2017 15:51
5
ответов

Строгое искажение указателя: какое-либо решение для определенной проблемы?

Мне вызвали проблему путем нарушения строгого правила искажения указателя. У меня есть тип T, который прибывает из шаблона и некоторого Интервала целочисленного типа того же размера (как с sizeof). Мой код по существу делает...
вопрос задан: 16 July 2012 05:26
4
ответа

Что такое строгое правило псевдонимов?

Отвечая на вопрос о распространенном неопределенном поведении в Си, души более просвещенные, чем я, ссылались на строгое правило псевдонимов. О чем они говорят?
вопрос задан: 15 October 2018 12:57
3
ответа

Следующий код нарушает строгий псевдоним?

Следующий код нарушает строгий псевдоним? int a = 0; * ((int *) ((char *) & a)) = 1; Почему бы и нет? потому что мы в конечном итоге разыменовываем указатель на int с использованием int *, что является законным Почему да? так как ...
вопрос задан: 19 January 2019 16:12
3
ответа

Разыменование каламбурившего типом указателя нарушит строго искажающие правила

Я использовал следующую часть кода для чтения данных из файлов как часть большей программы. удвойте data_read (ФАЙЛ *поток, международный код) {символьные данные [8]; переключатель (код) {случай 0x08:...
вопрос задан: 23 May 2017 10:30
3
ответа

Исправление для разыменования указателя с перфорацией типа нарушает строгий псевдоним

Я пытаюсь исправить два предупреждения при компиляции конкретной программы с использованием GCC. Предупреждения: предупреждение: разыменование перфорированного указателя сломается. правила строгого псевдонима [-Wstrict-aliasing] и ...
вопрос задан: 4 March 2013 16:59
3
ответа

Попытка понять ошибку GCC

У меня есть следующий бит кода: #include <iostream> #include <список> #include <алгоритм> #include шаблон <iterator> <Итератор имени типа> пустое нечто (Итератор начинаются...
вопрос задан: 22 January 2012 21:41
3
ответа

C99 строгое искажение управляет в C++ (GCC)

Насколько я понимаю, GCC поддерживает все свои функции C99 в C++. Но как строгое искажение C99 обрабатывается в коде C++? Я знаю, что кастинг с бросками C между несвязанными типами не строг-...
вопрос задан: 5 May 2010 06:25
2
ответа

Оптимизация строгого псевдонима Clang против недостижимого кода, нарушающего строго псевдоним

У меня есть вопрос о строгом псевдонимах и Clang оптимизации для одного примера. Давайте рассмотрим следующий пример (1): typedef void (* FTy) (void); FTy F = 0; (* Р) (); Это неопределенное поведение. ...
вопрос задан: 20 March 2019 23:34
2
ответа

Непоследовательные строгие правила наложения имен

У меня есть следующая программа, в которой я, казалось бы, быстро инициализирую два буфера, приводя 8-битный буфер к 32- и 64-битным значениям. #include < stdio.h > #include < stdint.h > typedef ...
вопрос задан: 19 March 2019 13:16
2
ответа

Когда символ* безопасен для строгого искажения указателя?

Я пытался понять строгие правила искажения, поскольку они относятся к символьному указателю. Здесь это указано: всегда предполагается, что символ* может относиться к псевдониму любого объекта. Хорошо так в...
вопрос задан: 13 November 2017 02:13
2
ответа

Как бросить sockaddr_storage и постараться не нарушать строго искажающие правила

Я использую Руководство Beej по Сетям и столкнулся с проблемой искажения. Он предлагает функцию для возврата или IPv4 или адреса IPv6 конкретной структуры: 1 пустое *get_in_addr (структура sockaddr...
вопрос задан: 15 September 2009 21:18
1
ответ

gcc, строгое искажение и [закрытые] страшные истории

В gcc-strict-aliasing-and-casting-through-a-union я спросил, были ли у кого-либо возникшие проблемы с объединением, каламбурящим через указатели. До сих пор ответ, кажется, номер, этот вопрос более широк:...
вопрос задан: 23 April 2019 05:01
1
ответ

Строгое нарушение псевдонимов: почему gcc и clang генерируют разные результаты?

Когда приведение типов нарушает строгое правило псевдонимов в C и C ++, компилятор может оптимизировать таким образом, чтобы можно было распространять неправильное значение константы и разрешать доступ без выравнивания, что ...
вопрос задан: 18 January 2019 08:09
1
ответ

Строгое искажение указателя: является доступ через 'энергозависимый' указатель/ссылку решением?

Вслед за определенной проблемой, самоответом и комментариями к нему, я хотел бы понять, является ли это надлежащее решение, обходное решение/взлом или просто неправильно. А именно, я переписал код: T x =...;...
вопрос задан: 23 May 2017 12:25
1
ответ

C искажающие правила и memcpy

При ответе на другой вопрос я думал о следующем примере: освободите *p; неподписанный x = 17; утверждайте (sizeof (пусто*)> = sizeof (неподписанный)); * (неподписанный*)&p = 17;//(1) memcpy (&p, и...
вопрос задан: 18 July 2010 11:41
0
ответов

С неопределенным поведением. Строгое правило наложения или неправильное выравнивание?

Я не могу объяснить поведение выполнения этой программы: #include #include #include typedef char u8; typedef unsigned short u16; size_t f (u8 * keyc, ...
вопрос задан: 3 December 2017 19:35
0
ответов

Почему странное поведение с приведением указателя обратно к исходному классу?

Предположим, что в моем коде я должен сохранить пустоту * как данные член и при необходимости приведите его к исходному указателю класса. Чтобы проверить его надежность, я написал тестовую программу (linux ubuntu 4.4.1 g ++ -...
вопрос задан: 23 May 2017 12:12
0
ответов

Как программно добавить новый NSToolbarItem на существующую панель инструментов?

Я ищу метод под названием addNewItem: (NSToolbarItem *) предмет или что-то подобное, что позволяет добавить программно созданный предмет на мою панель инструментов, но я не нашел его. Я хотел бы добавить...
вопрос задан: 23 May 2017 12:00
0
ответов

C преодоление ограничений псевдонима (объединения?)

Предположим, у меня есть образец исходного файла test.c, который я компилирую следующим образом: $ gcc -03 -Wall test.c выглядит примерно так .. /// CMP128 (x, y) // // аргументы // x - любой указатель на 128-битный ...
вопрос задан: 14 October 2016 13:32
0
ответов

Это действительно нарушает правила строгого наложения имен?

Когда я компилирую этот пример кода с использованием g ++, я получаю это предупреждение: предупреждение: разыменование указателя типа-наказания нарушит правила строгого алиасинга [-Wstrict-aliasing] Код: #include < iostream > ...
вопрос задан: 17 March 2016 00:19
0
ответов

Строгое расположение псевдонимов и памяти

Строгий псевдоним запрещает нам доступ к той же области памяти с использованием несовместимого типа. int * i = malloc (sizeof (int)); // при условии, что sizeof (int)> = sizeof (float) * i = 123; плавать * f = ...
вопрос задан: 17 May 2014 15:30
0
ответов

Предупреждение «разыменование указателя с типом перенаправления приведет к нарушению правил строгого сглаживания»

Я использую код, в котором я использую enum * в int *. Примерно так: enum foo {...} ... foo foobar; int * pi = reinterpret_cast (& foobar); При компиляции кода (g ++ 4.1.2) я получаю ...
вопрос задан: 8 February 2013 02:10
0
ответов

строгие псевдонимы и выравнивание

Мне нужен безопасный способ псевдонимов между произвольными типами POD, соответствующий ISO-C++11, явно учитывающий 3.10/10 и 3.11 n3242 или позже. Здесь много вопросов о строгом алиасинге, большинство...
вопрос задан: 27 August 2012 14:09
0
ответов

- строгое псевдонима C или C ++?

/ IEC 9899: TC2, стандарт говорит, что следуют следующие указатели 6.3.2.3 Указатель на объект или неполный тип может быть преобразован в указатель на другой объект или неполный тип. Если ...
вопрос задан: 22 July 2012 10:51
0
ответов

Нарушает ли доступ к первому полю структуры через приведение C строгое сглаживание?

Нарушает ли этот код строгое использование псевдонимов? структура {инт х;} а; *(int*)&a = 3 Более абстрактно, допустимо ли приведение типов между разными типами, если примитивные операции чтения/записи относятся к типу ...
вопрос задан: 21 July 2012 17:36
0
ответов

Приведение, которое нарушает правила строгого псевдонима

У меня есть функция, которая принимает unsigned long * и должна передать ее внешней библиотеке, которая принимает unsigned int *, и на этой платформе unsigned int / long имеют тот же размер. void UpdateVar (unsigned ...
вопрос задан: 21 July 2012 04:21
0
ответов

float bits and strict aliasing

I am trying to extract the bits from a float without invoking undefined behavior. Here is my first attempt: unsigned foo(float x) { unsigned* u = (unsigned*)&x; return *u; } As I ...
вопрос задан: 21 July 2012 04:19
0
ответов

Строгие псевдонимы и std::array против массива в стиле C

При компиляции следующего кода с помощью gcc 4.7 (g++-mp-4.7 (GCC) 4.7.0, созданный с MacPorts на OS X) я получаю, казалось бы, противоречивые результаты. Компилятор не жалуется, когда я пытаюсь переинтерпретировать и...
вопрос задан: 20 July 2012 14:59
0
ответов

Объединение двух массивов в C++

можно ли разделить два массива в таком объединении :struct { union { float m _V[Height *Length]; float m _M[Высота] [Длина]; } м _У; }; Делай...
вопрос задан: 18 July 2012 03:38