[devel] Re: RPM::Database

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Окт 19 23:07:02 MSD 2005


On Wed, Oct 19, 2005 at 10:04:00PM +0400, Dmitry V. Levin wrote:
> On Wed, Oct 19, 2005 at 09:46:29PM +0400, Alexey Tourbin wrote:
> > Такое впечатление, что происходит неправильный dereferencing, то есть
> > rpmTagTable в качестве указателя уже смотрит непойми куда.  Я озадачен. :)
> 
> Это просто:
> 
> 1. extern const struct headerTagTableEntry_s rpmTagTable[];
> Что такое символ rpmTagTable для приложения?
> Это адрес, по которому находится первый элемент массива.

Да.

> 2. extern const struct headerTagTableEntry_s * rpmTagTable;
> Что такое символ rpmTagTable для приложения?
> Это адрес, по которому находится адрес первого элемента массива.

Нет.  И тот и другой -- адрес первого элемента массива.  Только первый
адрес константный, его нельзя менять (компилятор сразу может проставить
сам этот адрес в код, но не проставляет).  А второй адрес можно менять,
компилятор обязан использовать косвенную адресацию.  Впрочем, я не до
конца понимаю, что там делает компилятор.  С точки зрения самого языка
Си эти две записи идентичны.

Нужно посмотреть, что там `gcc -S' показывает, но лень.  Но может
посмотрю. :)
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20051019/3fadeff4/attachment-0001.bin>


Подробная информация о списке рассылки Devel