Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];

Вниз

Оператор switch-case   Найти похожие ветки 

 
Vaddya   (2002-10-23 20:36) [0]

Как упоминалось на форуме, язык врага надо знать, поэтому задаю вопрос :) Есть код

int bigswitch(int msg, const int cs)
{
const int a = cs;
const int b = cs + 1;
const int c = cs + 2;

switch(msg) {
case a: return 4;
case b: return 5;
case c: return 6;
}
return msg + 10;
}

int main(int argc, char *argv[])
{
int i = 1;

cout << bigswitch(i, 1) << "\n";
return 0;
}


Так вот, компилятор ругается, что case expression not constant, хотя везде явно задано, что это константа и нигде в функции она меняться не будет - это тоже не позволительно. Как известно, такое же происходит и в Delphi.

Пример, хоть и "синтетический", если можно так сказать, но насущный. Например, лично мне при обработке сообщения WM_COMMAND таким же образом нужно пустить через switch хэндл окна, пославшего это сообщение, а не получается.

Как доказать компилятору, что в case одни константы, если мне это известно?


 
VaS   (2002-10-23 21:09) [1]

int bigswitch(const int msg, const int cs)


 
Vaddya   (2002-10-23 21:21) [2]

Да нет, в этом случае msg может быть не константой, мы его можем поменять. А вот ругается на case expression not constant. А пока, если оставить все как есть, прийдется делать длинный список перечислений if - else if - else if ..., т.е. то, от чего и избавляет switch.


 
Игорь Шевченко   (2002-10-24 10:29) [3]

Vaddya © (23.10.02 21:21)

Хороший совет: не заниматься ерундой, а сделать так, как будет понятно компилятору.


 
Vaddya   (2002-10-24 11:07) [4]

Игорь Шевченко © (24.10.02 10:29)

В смысле, через if - else if - else if?


 
Игорь Шевченко   (2002-10-24 12:47) [5]

Vaddya © (24.10.02 11:07)

Конечно



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
3-11110
Radiy
2002-10-13 19:39
2002.11.04
Автозагрузка программы с базой


3-11097
Владимир Мельников
2002-10-16 09:43
2002.11.04
вопрос по бд


1-11202
AL2002
2002-10-18 17:21
2002.11.04
Project/Options/Forms


14-11469
Anatoly Podgoretsky
2002-10-16 07:51
2002.11.04
Именинники 16 октября


8-11351
Avenger
2002-07-02 19:17
2002.11.04
Как преобразовать в jpg





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский