ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
172745 Топик полностью
Ксения (17.11.2009 16:25 - 16:30, просмотров: 104) ответил Алехин Александр на Адресная арифметика в IAR.
Вопрос в том, какой смысл вы придаете разности между двумя указателями (их сумма такого смысла заведомо не имеет). Величина pA -= n зависит от того, к какому типу относится указатель pA. Поскольку такая разность интерпретируется согласно правилам языка Си, как pA - n*sizeof( *pA) т.е. как адрес элемента того же типа, но отстоящий на n элементов левее (в сторону младших адресов). Поэтому из указателя допустимо вычитать или прибавлять к нему целое число, которое интерпретируется как число элементов, на которые осуществляется сдвиг адреса. А разность между двумя указателями одного и того же типа является по смыслу уже не адресом, а тоже числом элементов этого типа, которые укладываются между этими двумя указателями. Поэтому присваивать это число указателю никак нельзя. Именно поэтому IAR и противится, как противятся этому и все остальные компиляторы с языка Си.