Вы находитесь на странице: 1из 1

04/05/13

#define en C++, cmo s y cmo no | Cdigo C++


Blog Acerca Autor Contacto Busca

Categoras: Artculos Blog Curso Prctica Programas Teora

#define en C++, cmo s y cmo no


Guardado en: Curso el 28 de agosto del 2011

Este post forma parte del curso:


Etiquetas: bsico, define

Anterior :: Indice ::

El mayor objetivo de este post es darles a conocer una de las cosas que C++ permite hacer pero que nadie en su sano juicio debera de hacer. Y para que se los enseo entonces? Pues para que si algn da lo ven en un cdigo ajeno sepan qu pinch_ est pasando. Bueno, antes que nada, #define sirve para dos cosas: definir una constante o crear un macro. Los macros pueden llegar a ser algo difcil de entender, ahora slo veremos el asunto de las constantes. El asunto aqu es que si yo pongo (fuera del main) una lnea as:
# d e f i n eP I3 . 1 4 1 5 9 2 6 5

Bienvenidos!
Cdigo C++ es un blog sobre programacin en C++. En l encontrars ejemplos, programas y toda clase de ayuda para tus tareas de programacin.

significa que cada vez que escribamos PI en nuestro programa, C++ lo interpretar como 3.14159265. Es una simple sustitucin.
# d e f i n e< a q u v ae ln o m b r e >< d e s p u sd eu ne s p a c i ov ae lv a l o r >

Recibe mis artculos


Va RSS Va email

Pero el asunto es que se puedes hacer algunas cosas bastantes feas con esta propiedad. Vean este programa:
1# i n c l u d e < i o s t r e a m > 2u s i n gn a m e s p a c es t d ; 3 4# d e f i n eP I3 . 1 4 1 5 9 2 6 5 5# d e f i n eN O F _ C H A R5 0 6# d e f i n ep a u s ec i n . g e t ( ) ; c i n . g e t ( ) ; 7# d e f i n ec tc o u t 8# d e f i n ec nc i n 9# d e f i n ef a l s et r u e 1 0 1 1i n tm a i n ( ) 1 2{ 1 3 c h a rn a m e [ N O F _ C H A R ]={ 0 } ; 1 4 c t< <" E n t e ry o u rn a m e :" ; 1 5 c n> >n a m e ; 1 6 c t< <" B y e"< <n a m e< <" . "< <e n d l ; 1 7 i f ( f a l s e ) 1 8 c t< <" P . S .P i="< <P I ; 1 9 p a u s e 2 0}

Para Novatos
Porqu programar en C++? Hola M undo en C++ IDE recomendado, Code::Blocks

Problema comn
Tu progama corre pero al presionar enter se cierra sin mostrar los resultados?, slo agrega c i n . g e t ( ) ; c i n . g e t ( ) ;antes de la llave de cierre del main.

Posts Recientes
Diferencias entre C y C++ #define en C++, cmo s y cmo no Nuevo: Curso de C++ Code::Blocks, un IDE moderno para C++ Aprender ingls, en C++!?

Tenemos 6 definiciones, ordenadas en su nivel de aceptabilidad: #define PI 3.14159265 y #define NOF_CHAR 50, stos ejemplifican el uso primario de #define: guardan un valor que es constante durante toda la ejecucin del programa. #define pause cin.get();cin.get();, sta ya empieza a ser no aceptable pero podemos darla por buena porque nos ayuda a leer mejor nuestro cdigo. Ya sabemos que al escribir cin.get();cin.get(); nuestro programa se pausa al igual que con un getch(), pero al usar este #define escribiremos en lugar de eso simplemente pause. #define ct cout y #define cn cin, totalmente inaceptables. Algunas personas usan este tipo de #defines para escribir menos, pero de verdad que (en la gran mayora de los casos) no vale la pena el ahorro de caracteres, slo estamos haciendo nuestro cdigo menos entendible para otras personas. #define false true, este es mas bien como una broma (y es increble que funcione en verdad), pero si se usa en serio es como una rayada de madre. Si ejecutan el cdigo vern que s se muestra la lnea donde se imprime PI an que est dentro de un if al que nunca se debera de entrar y porqu s entra? porque false es true . As que ya saben cmo s y cmo no usar un #define en C++, y ya no estn indefensos ante programadores con malos hbitos.

Tags
while variables tringulos tipos de datos time

string.h signos
r ecuadr os pascal

seno coseno

sencillos recursividad
primos por centajes

rand punter os

pr omedios

operadores medio matrices math iostream

infinito

if else

hanoi gotoxy goto

funciones for

fibonacci factorial dev c++ descar gas conio.h

condiciones compilador es comentarios ciclos

cadenas bsico

bur buja bor land binar io ascii arreglos

Comentarios
drnocho: Estimado wilson, lo que pienso que es el problema es que tu inclu[...] Javier: M uchas gracias por el ejemplo mi fue de mucha utilidad en mi tare[...] maximiliano: hola como estan?,., alguien podria ayudarme en lo basico de la es[...] fredy: Hoy estuve repasando unos ejercicios y me surgi una duda: Co[...]

Posts Relacionados
Cmo empezar a usar iostream Introduccin a string.h Como usar cin.getline en C++ El break y el ciclo infinito
Zemanta
9 Comentarios

Links tiles
C plus plus C++ Reference El rincon del C

Archivo
septiembre 2011 agosto 2011 julio 2011

Posts Relacionados:

Como usar cin.getline en C++ Introduccin a string.h Cmo empezar a usar iostream Cmo dej ar de usar conio.h

codigoc.org/700-define-en-c-como-si-y-como-no

1/3

Вам также может понравиться