ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
1020805 Топик полностью
fk0, легенда (25.07.2020 01:57, просмотров: 578) ответил RxTx на Давай укоротим проблему, насколько это возможно, т.к. нет времени и я устал. С GCC и багом вряд ли я был прав, несмотря на то что внутри armcc.exe v4 v5 масса строк "GCC" и отсутствует "CLANG", armcc это отдельный компилятор. В v6 он называется armclang. Со стандартом вышло смешно. Формально ты привел действительно ровно то, что я спросил. И бессмысленно утверждать что разумеется вопрос был о прямых виновниках разговора: о функции memcpy (она оговорена в стандарте) и о 6.2
Я привожу в пример C++ потому, что зная как он работает начинает приоткрываться принцип работы и C компилятора тоже (благо внутри там у GCC и Clang для обоих языков один "движок"). В языке C нет некоторых вещей (шаблонов, ADL), что не даёт понять, например, почему тип важен и как тип может управлять компиляцией. Для C программиста может быть не очевидно, а C++ программист запросто может написать свой самодельный memcpy ровно с такими же "багами" пользуясь только средствами 

языка и не полагаясь на оптимизацию от компилятора (т.е. чтоб в зависимости размера выравнивания подсунутого типа вызывались разные реализации memcpy):


https://godbolt.org/z/G11vbx


И гудвиновский "баг" в конце прекрасно видно.

[ZX]