"Problema" con Visual C++

VipeR_CS

Buenas, es una chorrada seguro pero me está dando por saco ya. Estoy empezando con C siguiendo un tutorial y uso de IDE el VS2010 en proyectos de c++. El caso es que al compilar y ejecutar un programa (vease el típico "Hola Mundo") ya sea en modo debug o without debug, el resultado es un cmd que se abre durante una decima de segundo y desaparece, obligándome a ejecutarlo desde la consola de comandos yendo a la ruta del .exe, lo cual es un coñazo.

He probado un código random que pillé por internet y curiosamente al ejecutarlo without debug desde el VS2010, me mantiene el cmd abierto. Por si sirve de algo, pongo uno de los códigos con los que me "parpadea" el cmd.

#include <stdio.h>

int main() {
	printf ("Hola Mundo!\n"); 
	return 0;
}

No sé si es normal este comportamiento, a ver si alguien me lo puede aclarar. Gracias de antemano.

Nucklear

Ya no me acuerdo mucho de c++ pero prueba a poner antes del return getche();

Al pulsar Enter dejaría continuar el programa, creo recordar.

El problema es que al llegar al return el programa acaba sale, lo que provoca que se cierre la ventana.

VipeR_CS

Pues sí, poniendo esa función antes del return lo mantiene abierto, gracias :)

Nucklear

Solved entonces, si es que...

De todas formas y otra vez si no recuerdo mal, también podrías solucionarlo así, ya que el return 0 provoca que la función devuelva int 0 que automáticamente se reconoce como cierre del programa:

#include <stdio.h>

void main() {
printf ("Hola Mundo! \n " ) ;
}

Pruebalo si quieres.

VipeR_CS

Pues no, eso ya lo había intentado aunque se me pasó decirlo antes, pero el resultado es el mismo, se cierra el cmd. De momento con el getche() me vale xD

Nucklear

Lo imaginaba pero bueno, eso es por que la ventana reconoce el fin del programa y la cierra simplemente. Bueno, al menos ya tienes una solución jeje.

cabron

Si no quieres añadir nada, es tan simple como:

-Abrir consola (inicio->ejecutar->cmd),

  • ir al directorio donde tienes el exe compilado,
    -ejecutar el programa desde la consola

Si es el programa el que abre la consola, cuando se cierra el programa, se cierra la consola, no tiene que ver con C++, es por que la consola de Windows funciona así.

BLZKZ

en vez de getche puedes usar

system("Pause");

y queda mas chulo xD

VipeR_CS

#7 Así es como lo estaba haciendo hasta ahora y de hecho lo comento en #1, pero es que es un coñazo >.<

#8 Gracias, eso también funciona y parece un método más "elegante" ^^

BLZKZ

#9 de todas formas creo que puedes hacerlo sin poner system pause. Simplemente ejecuta con ctrl+f5 en vez de con F5 solo.

Amazon

#8 Hay gente en contra del system pause xd

http://www.gidnetwork.com/b-61.html

Nucklear

#8 A mi no me gusta ese método por dos razones, una de ellas es la que explica el link de #11 y otra de ellas por que no me parece elegante enviar Strings a métodos, salvo en casos que esa sea su función.

BLZKZ

está aprendiendo en win y con c, puede usarlo xD está claro que lo mejor es poner un breakpoint y ejecutar con F5, que para algo visual c++ tiene debugger y breakpoints, pero para lo que quiere hacer... :/

VipeR_CS

A ver, por partes. Ctrl+F5 no me sirve, es simplemente el acceso directo a without debugging y, como he puesto en #1, no sirve. Los breakpoints y debuggear sí, es una opción, pero porqué tengo que debuggear cada vez que quiero ejecutar el programita que solo es un hola mundo >.<.

He estado mirando la web esa de cosas a evitar... y bueno, en lo poco que he hecho hasta ahora creo que he usado el 70% xD tanto el system("pause"), como el fflush(stdin) o el scanf(). Procuraré no habituarme a ello ahora que estoy a tiempo... xD excepto al system("pause"), eso me mejora.

BLZKZ

#14 pues por comodidad prefiero un breakpoint al final y ejecutar con F5 xD, te ahorras codigo y sabes que si llega hasta ahí siempre para :P

Amazon

#15 hombre si lo que hace es testearlo un breakpoint al final y punto xD
Aunque yo para ponerlo al final siempre he usado un scanf T_T

Nucklear

#16 Eso si que es una chapuza xD

Es como los Goto's :no:

Amazon

#17 ya xD pero hago chapuzas para ir probando, despues las quito todas :D

Betrayal

Las llamadas al sistema nunca estan bien vistas, por que hacen que tu codigo no sea portable :) pero si es un programa para ir probando cosas y aprendiendo, se hace el apaño :)

BLZKZ

#19 eso no es del todo cierto, es posible que quieras usar una aplicacion externa (como gnuplot) que hay tanto para linux como para windows, y la ruta se la metas tu a mano. Haces la llamada system con la ruta y los parametros y te funciona igual :3

Usuarios habituales

  • BLZKZ
  • Betrayal
  • Amazon
  • Nucklear
  • VipeR_CS
  • cabron