Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión

 
Búsqueda Avanzada

15.707 Mensajes en 3.130 Temas- por 371 Usuarios - Último usuario: lasfirrot
Mayo 18, 2012, 05:15:19
Foro de Hispabyte.netProgramaciónLenguajes y ProgramaciónC / C++ (Moderador: D4MR0D)Tema: Tutorial sobre el Dev-C++
Páginas: [1]   Ir Abajo
Imprimir
Autor Tema: Tutorial sobre el Dev-C++  (Leído 15081 veces)
0 Usuarios y 2 Visitantes están viendo este tema.
Zheo
Grupo_Moderadores
Miembro Imprescindible
*
Mensajes: 1.408



Ver Perfil
« : Agosto 06, 2003, 11:23:23 »


Bueno, en este link teneis un documento que he hecho sobre el IDE + compilador  Dev-C++.

Está enfocado a aquellos que no lo han usado nunca, o ni siquiera sabían que existía (mal hecho Lengua ) No es muy profundo, pero ayuda a conocer bastantes entresijos de este IDE. Entre sus apartados incluye la creación, compilación y depuración de proyectos.
Incluye cómo descargarlo e instalarlo así que si aún no teneis un compilador gráfico para windows, ya no teneis excusa Sonrisa
Dev-C++:
Introducción y primeros pasos.

No está en absoluto cerrado, y si veis algún error, comentario o crítica, os agradecería que lo pusierais aquí para poder actualizarlo.


De paso, y aprovechando el post, quiero comenzar un FAQ sobre este IDE, y también sobre su compilador: el minGW (un Gcc para windows). Eventualmente este FAQ se añadirá al documento, y para ello quisiera que plantearáis vuestras dudas y/o aportaciones para responderlas entre todos. (En este post)  
Tened en cuenta que algunas de estas preguntas pueden aplicarse a m?s compiladores.

FAQ del Dev-C++  v 1.1.02

1) Cuando ejecuto el programa la ventana de MS-DOS se abre y se cierra muy rápido, o no se abre en absoluto. ¿Cómo puedo ver los resultados de mi programa?
Que la ventana de comandos del Windows haga eso es normal: ejecuta el programa y finaliza, y lógicamente al finalizarse la ventana se cierra. Para que puedas ver los resultados de tu programa tienes dos opciones:
-Ejecúta el programa directamente desde línea de comandos.
-Haz que el programa no finalice hasta que el usuario pulse una tecla.
Esto se puede hacer de varias maneras:
  • Poniendo getchar(); (si usas C) o std::cin.get(); (si usas C++) al final del programa, justo antes del return. Con esto el programa espera a que el usuario pulse una tecla antes de continuar, con lo que consigues tu prop?sito. Necesitas incluir stdio.h (en C) o iostream (en C++).
    • utilizar la función estándar system("pause") Esto tiene el inconveniente de que no es portable: sólo funcionará en windows. Necesitarás incluir stdlib.h (en C) o cstdlib en (C++)
      • Utilizando un comando personalizado del menú para ejecutarlo. Pulsa en el menú herramientas/configurar herramientas. Pulsa el botón añadir y te saldrá un diálogo, complétalo así:
        Nombre: ejecutar en consola de comandos(o el que tú quieras ponerle Lengua)
        Programa: c:\windows\system32\cmd.exe
        Carpeta de Trabajo:  <PROJECTPATH>
         (<PROJECTPATH> es una macro, la puedes incluir seleccionandola en la lista de "macros disponibles" y pulsando el botón "añadir macro" )
        Parámetros: /c "<EXENAME>" && PAUSE
        (<EXENAME> es una macro, se a?ade igual que la anterior.)
        Una vez hecho esto, cada vez que quieras ejecutar un programa de consola, vete al menú herramientas / ejecutar en consola de comandos -como ves se ha añadido este ítem nuevo al menú. Así ejecutarás el programa en una consola de comandos, pero no se cerrará al finalizar, sino que imprimirá el mensaje "pulse una tecla para continuar..." al estilo de Visual C++
      2) Vale, he puesto la primera opción de la pregunta 1) ¡¡Pero el programa se sigue cerrando igual!! ¿que hago?
      Eso es debido a que anteriormente has pedido al usuario que introduzca algo por teclado (o al menos por el dispositivo de entrada estándar) y en el buffer de entrada ha quedado registrado algún caracter. Normalmente es el caracter de fin de línea, (o digamos de una forma más clara, el caracter que se genera cuando pulsas ENTER) que algunas funciones de entrada no retiran del buffer. Eso implica que tu anterior getchar(); o std::cin.get(); recoge dicho caracter del buffer, con lo que una vez cumplida su función el programa continúa y finaliza. La solución es volver a poner otro getchar(); o std::cin.get(); justo detras del otro Sonrisa Si necesitas utilizar más de 3 seguidos para que esto funcione entonces es probable que debas revisar tu programa y el modo en que tratas la E/S o quizá debas decantarte por una de las otras dos opciones Gi&ntilde;ar

      3a) Dice que no encuentra la biblioteca conio.h. Pero si la usaba con mi/s anterior/es compilador/es. ¿Porque éste no la incluye?
      3b) El compilador me da el error '[linker error] undefined reference to `clrscr' " ¿Que pasa?
      Ante todo, estos errores vienen al utilizar la biblioteca conio (CONsole Input/Output)  la cual no es una biblioteca estándar. (Es decir, no se encuentra en todos los compiladores ni en todas las plataformas) Fue creada por Borland para sus compiladores y entornos DOS (consola de comandos). No es estándar porque la E/S a la consola del sistema es dependiente del sistema operativo (de hecho el estándar ni siquiera contempla que exista una pantalla o teclado, simplemente habla de dispositivos estándar de E/S) El Compilador sólo incluye las bibliotecas estándar, ni una más.

      ¿Que hacer entonces? Hay varias opciones:
      -La primera sería olvidarse de esa biblioteca y aprender a vivir sin ella. Puede hacerse, no es más que cuestión de acostumbrarse.

      -Otra opción sería implementar tú mismo las funciones utilizando la API del SO. Vale, es algo rollo, pero aprenderás más. Te aseguro que no es muy complicado. Es una buena opción.

      Si realmente no puedes vivir sin esa biblioteca hay otros medios:
      -Si no te gusta meterte en berenjenales, puedes hacer una cosa. El dev-c++ incluye en realidad cierto "soporte" a esa biblioteca. Hay un archivo conio.c con la implementación de algunas -en realidad MUY pocas- funciones de la biblioteca original. Para poder utilizarla necesitas incluir este fichero en tu proyecto y compilarlo con él. Ese fichero se encuentra en el directorio \dev-cpp\include. Por supuesto también tienes que incluir conio.h

      -Por último tienes una biblioteca conio para el Dev-c++ un poco más desarrollada y con el código fuente (por si algún día quieres saber como funciona me remito a lo dicho anteriormente Gi&ntilde;ar  ) en el siguiente link: http://c.conclase.net/conio/index.php

      4) El compilador me da el error `main' must return `int'  return type for `main' changed to `int'
      Bueno, a partir de este punto olvida TODO lo que hayas visto u oído acerca del valor de retorno de la función main(). La función main() siempre retorna, retorna y retornar? int, tanto en C como en C++ (principalmente porque aun en C++, main() se considera una función de C). Siempre fué así en el estándar, el problema es que muchos compiladores se olvidaron de que main() no es una función común, y permitían cualquier tipo de retorno. Los compiladores que siguen el estandar ahora no lo permiten, y dan o bien advertencias, o, como en este caso errores. La solución es fácil: declara main() como int main() y pon un return 0; al final de tu programa. El solo volverá a iluminar tu vida Sonrisa

      5) He compilado un programa 'hola mundo' en C++ ?y el código ocupa 439Kb! ¿No es un poco exagerado? Si lo compilo utilizando printf() el código ocupa sólo 22Kb...
      Bueno, si, es exagerado, pero no hay manera de evitarlo. Es un problema del minGW, que no enlaza las operaciones de E/S de C++ con la biblioteca en tiempo de ejecución de Windows, sino que lo hace estáticamente -parece ser que por problemas legales. Esto hace que el código de dicha biblioteca se enlace estáticamente, es decir, que el propio código objeto de la biblioteca se incluya en el ejecutable, con lo que su tamaño aumenta considerablemente. Lo bueno es que este aumento no es proporcional, sino constante: un programa el doble de grande que un 'hola mundo' (en código) no va a ocupar el doble, sino un poco más.
      Puedes reducir el tamaño del ejecutable añadiendo la opción -s como parámetro al linker (enlazador) También obtienes el mismo resultado ejecutando el comando strip.exe nombre_ejecutable, que se encuentra en el directorio /bin del Dev-C++ aunque te lo dejará en unos 200Kb (el 'hola mundo')
      Si realmente necesitas mantener el tamaño de código muy pequeño deberías utilizar la E/S de C, o bien utilizar un programa compresor de ejecutables como por ejemplo el upx (http://upx.sourceforge.net/)

      En fin, pues de momento sólo estas. Según se me vayan ocurriendo, vayais preguntando (o contestando por supuesto), o salgan en el foro las iré añadiéndo.

      Un saludo

      ----==EDIT==----
      Nueva versión 1.1.02 ---> Mejorada la ampliación a la cuestión 2 de la versi?n anterior.
      Nueva versión 1.1.01 ---> Añadida una nueva solución a la cuestión 1 y ampliada la cuestión 2:
      Nueva versión 1.1.00 ---> Corrección de bugs y añadida una nueva cuestión
      Nueva versión 1.0.02 ---> Corrección de bugs
      Nueva versión 1.0.01 ---> Corrección de bugs

* Dev-C_instalacion_y_primeros_pasos.pdf (477.8 KB - descargado 2886 veces.)
« Última modificación: Abril 14, 2009, 07:29:00 por HQH » En línea
Zheo
Grupo_Moderadores
Miembro Imprescindible
*
Mensajes: 1.408



Ver Perfil
« Respuesta #1 : Enero 05, 2004, 12:59:40 »

Nueva versi?n 1.1.02 ---> Mejorada la ampliaci?n a la cuesti?n 2 de la versi?n anterior

Nueva versi?n del documento Dev-C++ instalaci?n y primeros pasos... por si alguno no pas? por la p?gina principal Gi&ntilde;ar

(Este post es ?nicamente para avisar de que existe una nueva versi?n del FAQ y/o del documento)  
En línea
Páginas: [1]   Ir Arriba
Imprimir
Foro de Hispabyte.netProgramaciónLenguajes y ProgramaciónC / C++ (Moderador: D4MR0D)Tema: Tutorial sobre el Dev-C++
Ir a:  


Tema diseñado por RJ-45 para Hispabyte.net basado en el
theme famouspadexx v.09 designed by Formado Comprido
Downloable here. My present to padexx.de