Каким образом можно объявить глобальную константу?

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

dmitry1208197320
Сообщения: 16
Зарегистрирован: 13 янв 2010, 17:48

В функции обїявляю константу как:

const int count = 10;

Поскажите, можно ли объявить таким же образом глобальную константу для текущего модуля. Если можно, то в каком разделе?
IceFlame
Сообщения: 62
Зарегистрирован: 29 ноя 2009, 03:54

Просто объявить ее перед всеми функциями.
Аватара пользователя
Decoder
Сообщения: 308
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

Смотря что понимать под словом "модуль"? Если отдельно взятый СРР-файл, то сделай как написал IceFlame.
Если же это программный модуль (т.е. речь идёт о целом проекте), то делается так:
- В одном из заголовочных файлов эта константа (без инициализации) объявляется с модификатором extern.
Потом этот заголовочный файл включается во все СРР-файлы, которые обращаются к данной константе.
- В одном из СРР-файлов эта константа инициализируется конкретным значением.
Поумнеть несложно, куда труднее от дури избавиться.
dmitry1208197320
Сообщения: 16
Зарегистрирован: 13 янв 2010, 17:48

Объявляю перед всеми функциями:

const int count = 5;

В результате компилятор выдаёт ошибку:

c:\ddd\c++\seren\serenada\serenada\MainForm.h(318) : error C3845: 'Serenada::MainForm::LengthHead': only static data members
Аватара пользователя
Decoder
Сообщения: 308
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

Объявляю перед всеми функциями:

const int count = 5;

В результате компилятор выдаёт ошибку:

c:\ddd\c++\seren\serenada\serenada\MainForm.h(318) : error C3845: 'Serenada::MainForm::LengthHead': only static data members
Данную константу нужно объявлять и инициализировать не в MainForm.h, а в MainForm.cpp
Поумнеть несложно, куда труднее от дури избавиться.
dmitry1208197320
Сообщения: 16
Зарегистрирован: 13 янв 2010, 17:48

У меня проект создан под .NET в Visual Studio 2008 и в нём нет модуля MainForm.cpp.
dmitry1208197320
Сообщения: 16
Зарегистрирован: 13 янв 2010, 17:48

Всё-таки кто-нибудь может подсказать, где корректно объявлять глобальную константу?
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сказал бы с самого начала, что это .NET. В технологии .NET нету глобальных переменных. Объявляй свою статическую константу в скопе любого класса.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
dmitry1208197320
Сообщения: 16
Зарегистрирован: 13 янв 2010, 17:48

Скажите, а статическая константа, это объявление типа: static int temp = 5 ?
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Код: Выделить всё

static const int temp = 5;
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить