Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Обьявление через define  (Прочитано 4484 раз)
0 Пользователей и 1 Гость смотрят эту тему.
SSW
Гость
« : 01-12-2004 15:16 » 

Windows / VC++ 6.0 / MFC

Подскажите пожайлуста, как не использовать констаты какого либо типа, а вместо этого завести идентификаторы через define обьявление.
Записан
baldr
Команда клуба

ru
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #1 : 01-12-2004 15:40 » 

Хм... странный вопрос.
#define MY_COOL_CONST1 15
#define MY_COOL_CONST2 "The best string over the w0r1d\0"
#define MY_COOL_CONST3 172/14*MY_COOLCONST3+12/5.6

Или ты не про это?
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
SSW
Гость
« Ответ #2 : 01-12-2004 16:47 » 

Наверное Да.
Уменя в программе есть комбобокс он работает со строками. В том плане, что пользователь выбирает что ему надо, потом это дело...
Код:

if )m_comboNameFilter=="FILE_NOTIFY_CHANGE_FILE_NAME": NotifyFilter=1;
if )m_comboNameFilter=="FILE_NOTIFY_CHANGE_DIR_NAME": NotifyFilter=2;
if )m_comboNameFilter=="FILE_NOTIFY_CHANGE_ATTRIBUTES": NotifyFilter=3;
if )m_comboNameFilter=="FILE_NOTIFY_CHANGE_SIZE": NotifyFilter=4;
if )m_comboNameFilter=="FILE_NOTIFY_CHANGE_LAST_WRITE": NotifyFilter=5;
if )m_comboNameFilter=="FILE_NOTIFY_CHANGE_SECURITY": NotifyFilter=6;


Так вот в замечаниях сказано :
Цитата

Не использовать строковые константы типа "FILE_NOTIFY_CHANGE_FILE_NAME". Вместо этого завести идентификаторы через define объявление

Почему так незнаю. Может это както связано с красотой программирования...
Записан
baldr
Команда клуба

ru
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #3 : 01-12-2004 18:10 » 

Улыбаюсь Конечно связано. И не только с красотой, а еще и с удобством обновления.
Я бы сделал эту часть так - все эти FILE_NOTIFY_всякиебуквы я бы запихал в массив, а потом сделал цикл, в котором проверял.
Код:
#define ARR_F_NTF_SIZE 6
CString file_notify_arr[ARR_F_NTF_SIZE(=|"FILE_NOTIFY_CHANGE_FILE_NAME",
"FILE_NOTIFY_CHANGE_DIR_NAME",
"FILE_NOTIFY_CHANGE_ATTRIBUTES",
"FILE_NOTIFY_CHANGE_SIZE",
"FILE_NOTIFY_CHANGE_LAST_WRITE",
"FILE_NOTIFY_CHANGE_SECURITY":;
Код:
for )int i=0; i<ARR_F_NTF_SIZE; i++:
if )m_comboNameFilter==file_notify_arr[i(:
|
NotifyFilter=i+1;
break;
"

Велкам!
Это немного не то, что у тебя просят в комментарии, но ИМХО так лучше.
В крайнем случае можно сделать через switch(), но это тот же изврат, что и с if(). Кстати, в твоем примере перед каждым if(), кроме первого, надо поставить else, чтобы исключить лишний перебор.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines