#if 0
используется довольно часто, когда удаленный блок содержит комментарии к блоку
Не скажу, что это хорошая практика, но я вижу это довольно часто.
Одна строкаоператор flow-control + достаточно прост для понимания, хотя я лично его избегаю (и большинство руководств по кодированию, над которыми я работал, запрещают его)
Кстати, я бы, вероятно, отредактировал заголовок, чтобы он был несколько полезен«Зачем использовать #if 0 вместо блочных комментариев»
Если у вас есть следующее
#if 0
silly();
if(foo)
bar();
/* baz is a flumuxiation */
baz = fib+3;
#endif
Если вы наивно замените #if 0
/ #endif
на /* */
, это будетзаставляет комментарий заканчиваться сразу после flumuxiation, вызывая синтаксическую ошибку, когда вы нажимаете */
вместо #endif
выше ..
EDIT: Последнее замечание, часто синтаксис #if 0
используется только при разработке, особенно если вам требуется поддержка нескольких версий или зависимостей или аппаратных платформ.Нередко код изменяется на
#ifdef _COMPILED_WITHOUT_FEATURE_BAZ_
much_code();
#endif
с централизованным заголовком, определяющим (или нет) сотни этих #define констант.Это не самая красивая вещь в мире, но каждый раз, когда я работал над проектом приличного размера, мы использовали некоторую комбинацию переключателей времени выполнения, констант времени компиляции (это), решений компиляции времени компиляции (просто используйте разные.cpp в зависимости от версии) и случайное шаблонное решение.Все зависит от деталей.
Пока вы разработчик, просто начинаете работать, хотя ... #if 0
довольно распространено, если вы не уверены, что старый код все еще работаетимеет значение.