#if 0 ¿Se ejecuta? (Resuelto)

Iniciado por AlbertoBSD, 13 Abril 2021, 19:24 PM

0 Miembros y 1 Visitante están viendo este tema.

AlbertoBSD

#if 0
//Code
#endif


Es mi duda, Se ejecuta o no se ejecuta el codigo, Lo comento por que estoy migrando parte de una funcion en programa a otro:

Linea 210 de https://github.com/JeanLucPons/BSGS/blob/master/BSGS.cpp

#if 0
     pp.y.ModSub(&Gn[i].x,&pp.x);
     pp.y.ModMulK1(&_s);
     pp.y.ModSub(&Gn[i].y);           // ry = - p2.y - s*(ret.x-p2.x);  
#endif


Hay varias partes del codigo asi, y mi pregunta es, si no se ocupan para que estan ahi? Si fueran referencia yo las hubiese comentado en lugar de poner ese if 0



Edit

Acabo de comprobarlo, No, no se ejecuta

#include<stdio.h>

int main(){
int  i = 10;
printf("%i\n",i);
#if 0
i = 200;
#endif
printf("%i\n",i);
}


C:\codigos>testif.exe
10
10


¿Por que esta ahí entonces ese segmento de código?

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Eternal Idol

Para eventualmente cambiarlo por #if 1 y recompilar, no conozco otra razon.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

EdePC

Yo creo que debe ser para "distinguir" mejor esos "comentarios", o por facilidad de uso, dependiendo del editor de código puede ser más sencillo cambiar un caracter que seleccionar un conjunto de líneas y presionar cierta combinación de teclas para comentar/descomentar

Danielㅤ

#3
Hola, no se ejecuta ese if justamente porque está comentado.

Las razones de porque está ahí pueden ser varias, puede ser porque el programador esté indicando algo, muchos programadores suelen dejar fragmentos de código como referencia de algo, inclusive algunos lo ponen para no olvidarse de que en esa línea se puede hacer alguna comparación, también puede ser por comunidad para el programador ya que debe haber estado haciendo pruebas y para no estar borrándolo simplemente lo deja ahí.

Es más ese if le puede servir como una ayuda de la pruebas que haga con el código y para saber que en esa línea/parte/función se puede hacer una comparación if, como también puede ser que esté ahí porque se lo haya olvidado de borrar.

Tal vez puede pasar que lo esté usando como un indicador de  que en ese mismo lugar debe insertar código que no existe en el código público y lo usa para las pruebas.


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

Serapis

Es una directiva condicional...
Sería más útil, añadir una constante en vez del 0... y aignar a la connstante el valor 0 o 1 según proceda.

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

AlbertoBSD

Cita de: Eternal Idol en 13 Abril 2021, 19:44 PM
Para eventualmente cambiarlo por #if 1 y recompilar, no conozco otra razon.

Si, es lo mas seguro.

Cita de: Eternal Idol en 13 Abril 2021, 22:24 PM
No; no se compila ese codigo por la sencilla razon de que la expresion despues del #if es 0.

Si ya veo, ni siquiera genera el codigo en el ejecutable, el compilador lo ignora totalmente.

Cita de: EdePC en 13 Abril 2021, 19:53 PM
Yo creo que debe ser para "distinguir" mejor esos "comentarios", o por facilidad de uso, dependiendo del editor de código puede ser más sencillo cambiar un caracter que seleccionar un conjunto de líneas y presionar cierta combinación de teclas para comentar/descomentar

Si es lo que también pensé.

Muchas gracias a todos.

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Serapis

Como todas las directivas, que se compile o no y lo que se compile o no, depende de la propia directiva.
Las directivas, informan al compilador y ya el compilador valida lo que tenga que hacer con ella.

https://docs.microsoft.com/es-es/cpp/preprocessor/hash-if-hash-elif-hash-else-and-hash-endif-directives-c-cpp?view=msvc-160

Danielㅤ

¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!