|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.08.2009, 17:43 | #1 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
Константы в заголовочных файлах.
Как использовать в заголовочных файлах объявленные в них же константы.
Там же, если их определить, то получается множественное определение. А если не определить - получается array bound is not integer costant. Последний раз редактировалось jojahti; 26.08.2009 в 17:45. |
26.08.2009, 17:46 | #2 | |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Цитата:
Edit: Если нужно использовать константу одну и туже в нескольких .cpp тогда лучше будет создать заголовочный файл типа MyConst.h и там прописать нужные вам константы, потом просто не в заголовочных файлах их описывать а уже в .cpp файлах. Edit: Ну, как я и сказал, для массива я лучше бы использовал #define MYARRAYSIZE 5 к примеру. С удовольствием услышал бы варианты и другие тоже. Последний раз редактировалось BOBAH13; 26.08.2009 в 18:16. |
|
26.08.2009, 18:11 | #3 | ||
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
BOBAH13
Цитата:
Тоесть вот такая штука: //=== Файл заголовочный ===// extern const int FY; И вот если мне нужно заюзать в этом же файле мою константу для объявления массива? //=== файл подключаемый ===// const int FY=15; ////////////////////////////////////////////////////////////////// Цитата:
|
||
27.08.2009, 03:16 | #4 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Вы ведь уже спрашивали про константы и я вам отвечал, что чтобы использовать константу в другом файле надо определять её как extern.
Код:
|
27.08.2009, 08:26 | #5 | |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
netrino
Цитата:
Вопрос как её теперь использовать не в другом, а в этом файле? Т.к если константу заюзать, компилятор пишет array bound is not integer constant. Последний раз редактировалось jojahti; 27.08.2009 в 08:29. |
|
27.08.2009, 08:49 | #6 |
Заблокирован
Регистрация: 18.11.2007
Сообщений: 254
|
добвь следущее в аголовчный файл. максоры должны быть написаны самыми первыми , и все будет работать.
Код:
|
27.08.2009, 09:40 | #7 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
1) Заголовочный файл связывает прогу с библиотекой.
2) Поэтому заинклуден он в двух местах. 3) Поэтому вот этого вот const int FY = 15; получается две штуки. Как следствие двойное объявление и недовольный компилятор. 4) #ifndef HeaderH #define HeaderH - Вот это вот предотвращает повторное случайное включение заголовочного файла куда-нибудь. При чём тут моя константа? P.S. Где не так поправьте плиз? Я нифига непонял. |
27.08.2009, 09:56 | #8 | |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Смысл в том, что сначала #ifndef HeaderH если не включен этот заголовок то он включается #define HeaderH и больше никогда не будет включен в проект еще раз т.к. не даст #ifndef HeaderH. Соответственно и ваша константа будет объявлена только один раз.
Edit: Цитата:
Последний раз редактировалось BOBAH13; 27.08.2009 в 10:18. |
|
27.08.2009, 10:12 | #9 | |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
BOBAH13
Цитата:
|
|
27.08.2009, 11:26 | #10 |
Заблокирован
Регистрация: 18.11.2007
Сообщений: 254
|
ты бы проверил что тебе говорят. BOBAH13 объяснил для чего этот макрос.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Получить строковое значение константы в коде | CaptainNemo | Microsoft Office Word | 2 | 09.06.2009 06:47 |
Константы массива (запятая и точка с запятой) | IFRSoff | Microsoft Office Excel | 3 | 27.02.2009 18:11 |
Замена константы, переменной | valerij | Microsoft Office Excel | 2 | 20.03.2008 21:16 |
Константы в Макросе | valerij | Microsoft Office Excel | 2 | 03.02.2008 23:33 |
Имя константы-в строку | Роман Радер | Общие вопросы Delphi | 2 | 04.07.2007 12:37 |