Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Методы с модификатором volatile

991
14 мая 2005 года
Zenhipster
157 / / 14.01.2005
class A
{
protected:
//...
public:
A();
~A();

void xMthd(void) volatile;

};

В VC++6.0 компилится. Токо непонятно какую роль играет модификатор volatile в объявлении метода...
Подскажите в чем смысл такого объявления?
425
14 мая 2005 года
sq_deep
498 / / 18.02.2005
Слово volatile — подсказка компилятору и оптимизатору. Она показывает, что объект может измениться в любой момент другим процессом. Например, переменная, объявленная volatile, не может быть загружена в регистр для ускорения работы.

Зачем volatile написано в данном случае, для меня тоже загадка :{
10
14 мая 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by sq_deep
Зачем volatile написано в данном случае, для меня тоже загадка :{


Самомодифицирующийся код. :D

991
14 мая 2005 года
Zenhipster
157 / / 14.01.2005
Цитата:
Originally posted by Freeman
Самомодифицирующийся код. :D



Не ну реально! Компилится, работает, а какой смысл во всем этом если неизвестно назначение модификатора (именно для данного случая).
Может это метод который может вызываться извне как callback функция?

425
14 мая 2005 года
sq_deep
498 / / 18.02.2005
Цитата:
Originally posted by Zenhipster
Не ну реально! Компилится, работает, а какой смысл во всем этом если неизвестно назначение модификатора (именно для данного случая).
Может это метод который может вызываться извне как callback функция?

А может это автор просто выпендрился?

Много я видел программ, некоторые содержали volatile переменные, но функций с таким модификатором никогда не встречал. Даже приблизительно не могу себе представить, что volatile может значить применительно к функции...

991
16 мая 2005 года
Zenhipster
157 / / 14.01.2005
Цитата:
Originally posted by sq_deep
А может это автор просто выпендрился?



Если при сборке программы компилятор пишет:
"... .exe - 0 error(s), 0 warning(s)", значит логично предположить, что объявление методов с модификатором volatile вполне допустимо. Я же просто хочу докопаться до истины, т.е. узнать - какую роль играет сей модификатор в данном конкретном случае.

991
16 мая 2005 года
Zenhipster
157 / / 14.01.2005
Кажется разобрался! =)

class A
{
protected:
//...
public:
A();
~A();

void xMthd(void) const;
void yMthd(void) volatile;
void zMthd(void) const volatile;

};

- Внутри метода xMthd(), указатель this будет иметь тип (const class A * const),
внутри метода yMthd(), указатель this будет
иметь тип (volatile class A * const), а
внутри метода zMthd(), указатель this будет
иметь тип (volatile const class A * const),
со всеми вытекающими отседа последствиями.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог