реклама на сайте
подробности

 
 
> volatile указатель
skyv
сообщение Jan 16 2014, 09:16
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606



Добрый день.
Вопрос по использованию квалификатора volatile вроде обсуждался, но для себя хочу уточнить.
Имеем регистр аппаратуры, который объявлен в h файле как:
extern volatile unsigned int PORTB.
Как правильно определить аргумент функции в который передается адрес регистра аппаратуры:
- как указатель на переменную типа volatile - unsigned int * volatile ptr;
- как volatile указатель - volatile unsigned int *ptr;
- как volatile указатель на volatile переменную - volatile unsigned int * volatile ptr;
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jan 16 2014, 14:57
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(skyv @ Jan 16 2014, 15:48) *
Применительно к моему исходному вопросу я однозначно указал, что рассматриваю
работу функции с регистром аппаратуры, который объявлен как volatile.

Вот ваше сообщение:
Цитата(skyv @ Jan 16 2014, 13:33) *
И, если я правильно понял, автор советует всегда использовать в качестве аргумента функции указатель на volatile переменную.
В конце стоит точка. Предложение (=мысль) закончилось.
А вот если объединить со следующим предложением:
Цитата(skyv @ Jan 16 2014, 13:33) *
При этом сама переменная представляет собой регистр аппаратуры, который объявлен как volatile.
то смысл пропадает совсем. Компилятор не позволит вам без грязных хаков (явных приведений типов) присвоить адрес volatile-переменной указателю на обычную (не-volatile) переменную. Что же тогда советует автор? Не нарушать правила языка? Так это очевидно, для этого не нужно статьи писать.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 07:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016