programming headers functions c c-preprocessor preprocessor-directive

functions - headers c programming



#if 0 vs#if(1> 1)? Cualquier pista (2)

Estoy trabajando con un código heredado y encontré esto:

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

¿No está seguro, cómo puede ser diferente al #if 0 más típico, para comentar el código? ¿Alguna idea?


Ambas expresiones son falsas, por lo que el código nunca se compila.

Aquí hay explicaciones potenciales de por qué el programador no quiso usar la obvia directiva del preprocesador #if 0 para deshabilitar una sección de código:

  • el programador no quería que grep ''#if 0'' encontrara su fragmento de código.
  • las convenciones de codificación locales no permiten #if 0 y posiblemente aplican esta regla con un script. El programador encontró un trabajo contorsionado alrededor.
  • algunos editores de programadores (por ejemplo, vim ) #if 0 secciones #if 0 como comentarios, usando una expresión de preprocesador diferente derrota esto.
  • el programador podría haber pensado que se necesitaba una expresión booleana después de #if . El uso de paréntesis admite esta explicación, pero solo el programador puede decirlo.
  • el código original tenía #if (OPTION > 1) y la OPTION se cambió a 1 con un script sed o algún otro método de reemplazo de texto global.
  • el programador puede haber querido atraer la atención del siguiente lector. Ya sea con un propósito humorístico o algún otro objetivo oscuro. Objetivo alcanzado en este caso.
  • Como se señaló en algunos de los comentarios, esto podría ser un intento poco convincente de ofuscar el código, para aumentar la seguridad del trabajo ... Para este propósito, sugiero el operador #if (0 <- 1) : #if (0 <- 1) o el appromixator : #if (1 ==~ 1) .

Creo que el (1 > 1) actúa como un comentario para el lector. Es un emoticon o algún otro emoticon! :-)

También habría sido posible escribir (0>0) o similar.