On 2012.10.08 at 19:55:59 +0400, Dmitrii Kashin wrote: > Victor Wagner <[email protected]> writes: > > >> Замечу, что в книге Кернигана и Ритчи "Язык программирования Си" > >> подобных фишек не описывалось. Виктор, Вы не подскажете, где можно > >> почитать о подобных трюках? > > > > Есть очень хорошая книга Питера ван дер Линдена "Expert C programming". > > Там, насколько я помню, было очень доходчиво написано, какими граблями > > чревато использование подобных трюков. > > Нашел книгу и уже погрепал по слову union. К сожалению, примера, > относящегося к обсуждаемому случаю я не нашел. Дело еще осложняется тем, > что книга не имеет содержания, и на первый взгляд напоминает скорее > эссе.
Вот именно что сборник эссе. Из серии - человек с огромным опытом вспоминает минувшие дни "и битвы, где вместе рубились они". > Собственно, вы меня несколько напугали. Меня интересует, на какие грабли > я могу нарваться, если буду писать так, как в приведенном ранее > коде. Сам я не вижу потенциальных проблем использования подобных Например, можно нарваться на выравнивание полей структуры. Вот взбредет компилятору поле-массив выравнять не по размеру элемента, а по какой-то более крупной границе, и окажется что размер второго варианта union (на который выделяется память) на пару байтов меньше, чем первый + нужное количество элементов массива. И попортим следующий элемент стэка. А там - адрес возврата из функции. -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

