ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
12 июля
435605 Топик полностью
aoreh (23.08.2013 12:33 - 12:41, просмотров: 81) ответил Nikolay801_ на что правильно я догадываюсь, меня интересует какой из 2-х правильных вариантов, наиболее правильный.
первый вариант говорит о том, что данные по вот тому адресу могут меняться где-то второй вариант говорит, что сама переменная, которая имееи тип указатель на юинт8_т и содержит в себе адрес) может изменяться где-то вообще изначально вопрос стоит немного неправильный. т.к. реально имеется в виду, что переменная X, которая находится по адресу (0x08004000-2) может меняться, н-р, железом, тогда нужно правильно выполнить приведение адреса к указателю, т.е. для простоты: (hwdevice_t *)(0x08004000-2); в то время как hwdevice_t есть ни что иное как volatile uint8_t, а часто и с атрибутами риад-онли (конст), н-р. т.е. полное приведение, в вашем примере выглядит так: (volatile uint8_t *)(0x08004000-2); соответственно и левая часть должна быть volatile uint8_t *ptr = (volatile uint8_t *)(0x08004000-2); иначе (uint8_t * volatile ptr = (volatile uint8_t *)(0x08004000-2); ) будет просто ошибка компиллятора