powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Объявление переменных
6 сообщений из 6, страница 1 из 1
Объявление переменных
    #33002267
Влад123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите разобраться, что означает такое объявление
1) const volatile double dDouble1
2) extern const volatile double dDouble2
...
Рейтинг: 0 / 0
Объявление переменных
    #33002379
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Влад123Помогите разобраться, что означает такое объявление
1)
const volatile double dDouble1;


Переменная dDouble1 с типом double, которая не может меняться программой в течении своей жизни, но которая может меняться извне программы (volatile).
Возможность изменения переменной извне программы является только рекомендацией компилятору по генерации кода таким образом, чтобы он
не использовал значение переменной, закэшированной в регистрах процессора или в прочей процессорной памяти.

Влад123
2)
extern const volatile double dDouble2;


Ссылка на такую же по характеристикам (повторяться не буду) переменную, как и описанная в п.1, но с именем dDouble2, в словаре глобальных имен.
В отличие от выражения
[src c]
const volatile double dDouble1;
[/src]которое
является и объявлением, и определением

может помещать имя dDouble1 в словарь глобальных имен

данное выражение

Является только объявлением

Не помещает имя dDouble2 в словарь глобальных имен, а требует наличия там уже помещенного туда имени dDouble2.
...
Рейтинг: 0 / 0
Объявление переменных
    #33002400
prof79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) const volatile double dDouble1
Попробуем разобрать. Скажу сразу, что эта строчка наверное не должна компилиться.

const - константная т.е. значение этой переменной изменить нельзя. Поэтому чтобы необходимо переменной присвоить какое-либо начальное значение.
volatile - "изменчивая". Т.е. значение этой переменной может изменяться "не описанным в языке способом"(с) Страуструп. Например операционной системой. Т.е. эта переменная не может изменяться средствами С++, однако ее значение можно изменить извне, с помощью ассемблера, или как-то еще нестандартно.

2) extern const volatile double dDouble2
Добавляется новое ключевое слово. Для понимания необходимо усвоить разницу между обьявлением и определением.
При обьявлении обьекта, последний не инициализируется. Упрощенно: компилятору дается инструкция: где-то есть такой-то обьект такого-то типа.
При определении под обьект выделяется память и обьект инициализируется. Обьявлений может быть много, определение - только одно. Естественно типы в обьявлениях и определении обьекта должны совпадать.
extern - означает что dDouble2 - только обьявление переменной. А определение в другом месте.
Поэтому присваивать начальное значение переменной здесь не следует(а если присвоить - то инструкция extern будет проигнорирована). Необходимо в другом месте программы определиь переменную с начальным значением
...
Рейтинг: 0 / 0
Объявление переменных
    #33002673
Влад123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО!
...
Рейтинг: 0 / 0
Объявление переменных
    #33006115
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prof791) const volatile double dDouble1
Попробуем разобрать. Скажу сразу, что эта строчка наверное не должна компилиться.

Должна.

prof79
const - константная т.е. значение этой переменной изменить нельзя. Поэтому чтобы необходимо переменной присвоить какое-либо начальное значение.
volatile - "изменчивая". Т.е. значение этой переменной может изменяться "не описанным в языке способом"(с) Страуструп. Например операционной системой. Т.е. эта переменная не может изменяться средствами С++, однако ее значение можно изменить извне, с помощью ассемблера, или как-то еще нестандартно.

Ну сам же все знаешь. Почему же не должна компилиться ?
Должна, const не дает переменной меняться в программе на C++.
А volatile говорит, что она менятеся еще где-то.
...
Рейтинг: 0 / 0
Объявление переменных
    #33006361
prof79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv prof791) const volatile double dDouble1
Попробуем разобрать. Скажу сразу, что эта строчка наверное не должна компилиться.

Должна.

Начальное значение не присваивается. Попробывал на VC 7.1 - не компилит. Говорит "error C2734: 'dDouble1' : const object must be initialized if not extern"
Как на эту тонкость смотрит стандарт не знаю. Поэтому написал "наверное".
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Объявление переменных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]