Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.04;
Скачать: CL | DM;

Вниз

Оператор 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
8-11337
AlexanderVasjuk
2002-07-09 15:25
2002.11.04
Создание MP3


3-11095
Neposeda
2002-10-15 13:45
2002.11.04
Как обработать ошибки выдаваемые при выполнении SQL-оператора?


7-11497
JAndrey
2002-08-21 16:46
2002.11.04
Как написать драйвер для ДИВАЙСА подключенному к LPT или COM порт


7-11528
МИФИст
2002-08-28 16:17
2002.11.04
Быстрый поиск в RichEdit е...


1-11302
Sabor
2002-10-23 16:40
2002.11.04
Клавиатура?