OlivaEduardo / PrimerEjercicio

Intentando aprender a manejar el repo en GitHub
0 stars 0 forks source link

Macro - Parenthesis missuse #3

Open RicardoRodriguezArg opened 6 years ago

RicardoRodriguezArg commented 6 years ago

https://github.com/OlivaEduardo/PrimerEjercicio/blob/cfcf64c31db8e42836ef16d9992f0afa7b65a7ed/Project1/Project1/Principal.cpp#L6 Por lo general, los argumentos de la macro son definidos entre parentesis para evitar que la macro se "rompa", asi mismo toda la macro Por ejemplo:

define SUMA(a, b) a + b //Esta mal definida (Forma 1)

Deberia ser definida de la siguiente manera Definida de la forma 1: const int value = SUMA(2,3); //Este funciona no se "rompe" const int value = SUMA(2, 3+1 ); //Este no funciona se "rompe"

Aca tenes todos los argumentos de la macro con parentisis y la macro con parentesis #define SUMA(a, b) ( ( a ) + ( b ) ) //(Forma 2)

Aca tenes todos los argumentos de la macro con parentisis y la macro sin parentesis final #define SUMA(a, b) ( a ) + ( b ) //(Forma 2) const int value = SUMA(2,3); //Este funciona no se "rompe" const int value = SUMA(2, 3+1 ); //Este funciona const int value = SUMA(2, 3+1 ) +1 ; //Este no funciona

OlivaEduardo commented 6 years ago

En este caso el mal uso de paréntesis es intencional. La idea del ejercicio planteado era marcar cómo funcionaba. En la rama fuera de "master" está la versión "corregida" (puse la expresión entre paréntesis, pero no también los argumentos).