Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу #ifdef против if
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
tiger() tiger() вне форума
Member
 
Сообщений: 33
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.04.2011
По умолчанию #ifdef против if - 24.09.2012, 08:44

Какая разница между использованием директивы

c Код:
#ifdef MyVariable
some operators;
#endif

и условия

c Код:
if (MyVariable == 1)
{
some operators;
}

???

Последний раз редактировалось tiger(); 24.09.2012 в 11:50
Ответить с цитированием
  (#2 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,474
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 24.09.2012, 10:02

Первый при компиляции в код закладывается, а второй может и во время выполнения, и при компиляции (зависит от остальной программы и оптимизатора).
Ответить с цитированием
  (#3 (permalink)) Старый
tiger() tiger() вне форума
Member
 
Сообщений: 33
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.04.2011
По умолчанию 24.09.2012, 10:04

Зачем нужно чтобы часть кода была заложена на этапе компиляции, а не во время выполнения?

И что значит "во время выполнения закладывается"? После компиляции мы в любом случае исполняемый код получаем, как он может потом во время выполнения меняться?
Ответить с цитированием
  (#4 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,474
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 24.09.2012, 10:10

Цитата:
Сообщение от tiger() Посмотреть сообщение
Зачем нужно чтобы часть кода была заложена на этапе компиляции, а не во время выполнения?
Платформо-зависимый участок кода, например, не имеет смысла компилировать в Linux, если он написан под Windows.

Цитата:
Сообщение от tiger() Посмотреть сообщение
После компиляции мы в любом случае исполняемый код получаем, как он может потом во время выполнения меняться?
Меняется не код, а ход его выполнения процессором.
Ответить с цитированием
  (#5 (permalink)) Старый
tiger() tiger() вне форума
Member
 
Сообщений: 33
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.04.2011
По умолчанию 24.09.2012, 11:50

Понял вроде бы.
Если кусок написан внутри директивы, он либо попадет в код (как если бы это было "обычное" if-условие) или не попадет вообще. А если кусок попадает "в чистом виде", то в зависимости от изменения переменной тело условия будет либо выполняться либо нет.

Спасибо.
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
nokia n95 8g против n73 1992vendetta Выбор телефона 0 26.07.2012 14:38
СВЧ против Шансона gidron Юмор 0 12.01.2012 23:08
Ноут бук для игр! За и Против! suall Выбор ноутбука 7 12.02.2011 21:08
Разгон, все ЗА и ПРОТИВ. Димка_123 Любые вопросы от новичков 5 29.12.2010 15:52
Условная компиляция ifdef endif Odin_KG Visual C++ 6 08.04.2010 18:55
Проектор - за и против Дима Мониторы 10 07.04.2010 10:53
Директивы препроцессора #if,#ifdef,#endif leonid_z Eclipse 0 25.02.2010 20:39
Windows против *nix Garik Мысли вслух 249 15.02.2007 19:58
против Raid MaMaV Офтопик 11 11.01.2007 11:48
Диалоги против D3D Fess exe Программирование графики 3 30.03.2006 00:50
Excel VBA и SQL за и против Anuta Visual Basic 2 11.01.2006 01:49
VIP против GNU DeepFinder Prolog 4 02.08.2005 17:26



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов