ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
30 апреля
382302 Топик полностью
fk0, легенда (22.01.2013 17:30, просмотров: 190) ответил Codavr на Почему? "современные стандарты требуют, чтобы представление и требования по выравниванию для void-указателей были теми же, что для указателей на char, что означает взаимозаменяемость этих типов."
Нет... sizeof(*(void*)) у конкретного компилятора может быть неизвестно какой, а sizeof(*(char*)) == 1 всегда. У GCC исключение "расширение C", что sizeof в таком случае тоже == 1. Но для других компиляторов не так и бывает, что арифметика над указателями на void даёт результат сильно отличный от указателей на char. Практически сталкивался с таким вариантом и это соответствует стандарту C99. Правда вменяемые компиляторы дают варнинг. Где сталкивался не помню. Но не GCC, а что-то распространённое. Выравнивание не причём. Дело в sizeof целевого типа. Где для char всё ясно, а для void неопределённость.
[ZX]