Подтвердить что ты не робот

#if 0 vs #if (1> 1)? Любая подсказка

Я работаю с устаревшим кодом и нашел это:

#if (1 > 1)
//define some function
#endif

Не уверен, как это может отличаться от более типичного #if 0, чтобы прокомментировать код? Любые мысли?

4b9b3361

Ответ 1

Оба выражения ложны, поэтому код никогда не компилируется.

Вот потенциальные объяснения того, почему программист не захотел использовать очевидную директиву #if 0 препроцессора для отключения секции кода:

  • программист не захотел grep '#if 0' найти фрагмент кода.
  • Локальные правила кодирования запрещают #if 0 и, возможно, применяют это правило с помощью script. Программист обнаружил искаженную работу.
  • некоторые редакторы программистов (например, vim) раскрашивают разделы #if 0 в качестве комментариев, используя другое выражение препроцессора, которое побеждает это.
  • программист мог подумать, что после #if требуется булевское выражение. Использование круглых скобок поддерживает это объяснение, но может сказать только программист.
  • исходный код имел #if (OPTION > 1) и OPTION был изменен на 1 с помощью sed script или другого метода замены глобального текста.
  • программист, возможно, хотел привлечь внимание следующего читателя. Либо для юмористической цели, либо для какой-то другой неясной цели. Цель достигнута в этом случае.
  • как отмечено в некоторых комментариях, это может быть неудачная попытка обфускации кода, чтобы повысить безопасность работы... Для этого я предлагаю оператор get: #if (0 <- 1) или appromixator: #if (1 ==~ 1).

Ответ 2

Я думаю, что (1 > 1) выступает в качестве комментария для читателя. Это смайлик или какой-то другой смайлик!: -)

Было бы также возможно написать (0>0) или подобное.