Каким образом можно объявить глобальную константу?
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
-
- Сообщения: 16
- Зарегистрирован: 13 янв 2010, 17:48
В функции обїявляю константу как:
const int count = 10;
Поскажите, можно ли объявить таким же образом глобальную константу для текущего модуля. Если можно, то в каком разделе?
const int count = 10;
Поскажите, можно ли объявить таким же образом глобальную константу для текущего модуля. Если можно, то в каком разделе?
Просто объявить ее перед всеми функциями.
Смотря что понимать под словом "модуль"? Если отдельно взятый СРР-файл, то сделай как написал IceFlame.
Если же это программный модуль (т.е. речь идёт о целом проекте), то делается так:
- В одном из заголовочных файлов эта константа (без инициализации) объявляется с модификатором extern.
Потом этот заголовочный файл включается во все СРР-файлы, которые обращаются к данной константе.
- В одном из СРР-файлов эта константа инициализируется конкретным значением.
Если же это программный модуль (т.е. речь идёт о целом проекте), то делается так:
- В одном из заголовочных файлов эта константа (без инициализации) объявляется с модификатором extern.
Потом этот заголовочный файл включается во все СРР-файлы, которые обращаются к данной константе.
- В одном из СРР-файлов эта константа инициализируется конкретным значением.
Поумнеть несложно, куда труднее от дури избавиться.
-
- Сообщения: 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
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Объявляю перед всеми функциями:
const int count = 5;
В результате компилятор выдаёт ошибку:
c:\ddd\c++\seren\serenada\serenada\MainForm.h(318) : error C3845: 'Serenada::MainForm::LengthHead': only static data members
Поумнеть несложно, куда труднее от дури избавиться.
-
- Сообщения: 16
- Зарегистрирован: 13 янв 2010, 17:48
У меня проект создан под .NET в Visual Studio 2008 и в нём нет модуля MainForm.cpp.
-
- Сообщения: 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" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
-
- Сообщения: 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" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.