2010-04-14 16 views
8

Sto provando Visual Studio 2010 compilando un programma C. Dopo aver visualizzato la soluzione nella finestra di comando "DOS", la finestra viene immediatamente chiusa. In Visual Studio 2008, si ottiene il messaggio premere un tasto qualsiasi per continuare e premendo un tasto si chiude la finestra del prompt dei comandi. Come imposto questo comportamento nel 2010?Visual Studio 2010 in uscita dopo la fine del programma

+1

Non è diverso in VS2010, premendo Ctrl + F5 si richiama il prompt "premere un tasto qualsiasi" al termine del programma. –

+1

Sì, conosco questa scorciatoia per "start senza debugging" ma nel mio caso la finestra della console viene immediatamente ignorata. Questo è strano. – yCalleecharan

risposta

19

Dopo un po 'di ricerca su google, ho trovato la soluzione this che non comporta la modifica del codice. Contiene una soluzione che prevede la modifica del file .vcxproj.

Per fare questo da all'interno di Microsoft Visual C++ 2010 Express (sto supponendo che è simile per Visual Studio 2010), aprire il progetto e passare alla seguente menu:

Project->$YOURPROJECTNAME Properties... 
    ->Configuration Properties 
     ->Linker 
      ->System->SubSystem 

quindi utilizzare il menu a discesa per selezionare la console (/ SUBSYSTEM: CONSOLE) e applicare la modifica.

"Inizia senza eseguire il debug" dovrebbe fare la cosa giusta ora.

+0

Meraviglioso. Funziona molto bene E ti ho dato anche 1 voto. Sto usando l'edizione Express. – yCalleecharan

+0

Grazie mille per aver segnalato questo bug qui. – yCalleecharan

+0

Questo funziona benissimo per me grazie. C'è un modo per applicare automaticamente questa soluzione a tutti i progetti? – petric

2

Questo è normale. La finestra della console "DOS" è collegata al tuo programma e dovrebbe terminare quando il tuo programma finisce. Se vuoi che rimanga aperto, devi aggiungere del codice al tuo programma per tenerlo aperto. Tutto quello che devi fare è aggiungere una dichiarazione di stampa e quindi inserire la dichiarazione alla fine del tuo programma.

+0

Ok grazie ... un codice per accettare un input dalla tastiera. – yCalleecharan

0

Se si avvia l'applicazione senza debugger ("Avvia senza debug"), la finestra della console rimarrà aperta finché non si preme un tasto.

+0

hmmm ... in realtà l'ho fatto. So che questo si applica anche in Visual Studio 2008 e questo "comando" è quello che uso per eseguire i miei programmi. Quindi sono rimasto un po 'sorpreso da questo diverso comportamento nel 2010. – yCalleecharan

+0

Posso confermare che l'utilizzo di "start senza debug" nel 2010 non mantiene la finestra della console aperta dopo l'uscita del programma. – yCalleecharan

+0

Ora, è strano. Non ho lo stesso comportamento sul mio Visual Studio ... –

0

È possibile aggiungere questa funzione e chiamarlo proprio prima di tornare da main(): versione

void keep_window_open() 
{ 
    // clear buffer 
    fflush(stdin); 
    printf("Please enter a character to exit\n"); 
    char ch; 
    ch = getchar(); 
    return; 
} 

ho adattato da un C++ in un file di intestazione utility sul sito di Bjarne Stroustrup: http://www.stroustrup.com/Programming/std_lib_facilities.h

+0

Grazie mille. Ho dovuto spostare la linea "char ch" subito dopo la parentesi di apertura {dopo la definizione della funzione in modo da evitare errori di compilazione. Penso che la riga "fflush (stdin)" sia in codice C++ e non funzioni bene in C. – yCalleecharan

+0

Hai ragione, secondo le domande frequenti c: http://c-faq.com/stdio/stdinflush. html fflush è definito solo per i flussi di output. Il collegamento fuori da questa voce delle domande frequenti spiega come svuotare l'input: http://c-faq.com/stdio/stdinflush2.html – Darel

+0

Grazie per il collegamento. – yCalleecharan

1

FWIW, il comando "Avvia senza eseguire debug" funziona in VS2010 esattamente come fa per me nelle precedenti versioni di Visual Studio (ovvero, per un progetto di console la console rimane aperta quando il processo termina con "Premere un tasto qualsiasi per continuare. . ." richiesta).

Quindi, esattamente come stai ottenendo VS2010 per eseguire il programma? Se stai utilizzando la scorciatoia "Ctrl-F5", puoi verificare che Ctrl-F5 sia associato a Debug.StartWithoutDebugging in "Opzioni/Ambiente/Tastiera"?

Inoltre, si può provare a eseguire il programma utilizzando il menu ("Debug/Avvia senza debug")?

+0

Grazie. Per prima cosa compilo il file, poi lo compilo e poi uso Debug> start senza debugging. Ho assegnato il "Ctrl-F5" come mi hai detto, ma ottengo lo stesso comportamento. Ammetto che è strano come Visual Studio 2005 funziona bene come previsto. – yCalleecharan

+0

@yCalleecharan: Interessante: non sono a conoscenza di un'impostazione che controlli questo. –

+0

Sì, è difficile credere a questo strano comportamento. – yCalleecharan

3

Il motivo è che ora in VS 2010 è possibile creare un progetto C++ vuoto e generico per impostazione predefinita, senza dover eseguire la procedura guidata. Ciò causa che VS 2010 non imposta correttamente il flag e quindi VS2010 non ha idea che sia un'applicazione console per la quale invierà il solito prompt "Premere un tasto qualsiasi ...".

Questo problema non si verifica se si crea un tipo di progetto Applicazione console dal menu Nuovo progetto.

Ma allora puoi impostare questo flag te stesso e molti altri, tramite Project/Settings, come il post sopra ha risposto correttamente!

2

Se si desidera che rimanga aperto, è necessario aggiungere codice al programma.Mi piace

#include <stdio.h> 
#include <stdlib.h> 

... main(...) 
{ 
    your codes 
     . 
     . 
     . 

    system("pause"); 

} 

se aggiungi questo codice, lo schermo nero rimane aperto. "system (" pause ")" all'interno del file di intestazione stdlib.h.

+0

La tua risposta sarebbe un po 'meglio se spiegassi come avrebbe dovuto funzionare. Per come stanno le cose, è un misterioso incantesimo e il lettore non impara molto. – dmckee

+0

Grazie amico ... sto lavorando bene – Lokesh

1

Portare "Start senza di debug" al menu Debug ...

Strumenti >> >> Personalizza i comandi (Tab) >> Barra dei menu (elenco a discesa) >> debug (opzione controlla) >> Aggiungi Comando (pulsante) >> Debug (Elenco categorie) >> Avvia senza debug

Utilizzo di "Avvia senza debug" Consente a VS2010 di visualizzare la frase "Premere un tasto qualsiasi per continuare" prima di uscire.

Problemi correlati