реклама на сайте
подробности

 
 
> Использование #define в switch case
sidy
сообщение Oct 26 2017, 13:17
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333



Добрый день. Господа, возник вопрос, использую конструкцию следующего вида:
switch(PnominalFact)
{
case 20:
{
#define Rdat 27.4f
}
break;
case 80:
{
#define Rdat 50.0f
}
break;
default: break;
}
}
И соответственно независимо от case Rdat будет 50.0f. Т.е. получается что на директивы условных компиляций условия операторов не распространяются?

Сообщение отредактировал sidy - Oct 26 2017, 13:18
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Oct 26 2017, 13:48
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (sidy @ Oct 26 2017, 16:17) *
возник вопрос, использую конструкцию следующего вида:
Попробуйте словами описать, что вы от нее хотели получить.
QUOTE (sidy @ Oct 26 2017, 16:17) *
И соответственно независимо от case Rdat будет 50.0f.
Ну, во-первых вы должны были получить кучу предупреждений, что Rdat переопределяется. Во-вторых, до следующего #define Rdat будет иметь значение, заданное в предыдущем.
QUOTE (sidy @ Oct 26 2017, 16:17) *
Т.е. получается что на директивы условных компиляций условия операторов не распространяются?
Какой-то набор слов. где тут директивы условных компиляций, что такое "условия операторов"?

В целом, Kabdim ответил правильно - препроцессор делает простые текстовые подстановки.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 02:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01476 секунд с 7
ELECTRONIX ©2004-2016