2012-06-17 6 views
8

Sto cercando di utilizzare "printf" nel mio progetto Visual C++, tuttavia non funziona. Usando il tutorial di Lazy Foo, ho impostato SDL nel mio progetto, ma quando lo gioco, printf non fa nulla.Printf non sta stampando nulla per l'output? C++ SDL

#include "SDL.h" 
#include <stdio.h> 

int main(int argc, char* args[]) { 
    printf("Testing"); 
    return 0; 
} 

L'output è simile al seguente:

The program '[4664] SDL Testing.exe: Native' has exited with code 0 (0x0). 

E che su di esso. Cosa potrebbe esserci di sbagliato?

+0

Solitamente "0" significa successo. Prova a prendere qualsiasi input (o) per mantenere un punto di rottura all'istruzione return. – Mahesh

+0

@Mahesh Ho provato a mettere i breakpoint durante il tempo in cui ho usato printf, ancora senza output. :( – Qasim

+0

La finestra di output in Visual Studio! = Stdout o stderr. –

risposta

8

SDL reindirizza lo stdout in un file, stdout.txt. Dovresti trovarlo nella directory di lavoro del tuo programma.

+0

Grazie. Questo file viene creato nella cartella Debug del progetto Visual C++, contenente tutte le funzioni "std :: cout" che chiamo. – Qasim

1

Probabilmente non visualizzi l'output perché stai eseguendo il programma da Visual Studio premendo F5 e la finestra della console si chiude dopo che il programma è stato chiuso.

È possibile eseguire una delle 3 operazioni -
Inserire un punto di interruzione nell'istruzione di reso.
Inserire un'istruzione getchar() prima dell'istruzione return.
Eseguire il programma premendo Ctrl + F5 anziché F5.

Tutto quanto sopra farà sì che la finestra della console rimanga sullo schermo.

È anche possibile eseguire direttamente l'EXE da un prompt dei comandi (cmd.exe).

+1

Inserendo un punto di interruzione nell'istruzione return, non so dove cercare la console. Quando si preme Ctrl + F5, la vista Output rimane vuota, ma quando uso solo F5, l'output mostra i registri di build e di debug e contiene quanto segue: http://pastebin.com/UKWpCKsD Esegui tutti gli errori del PDB un ruolo in questo? – Qasim

+0

Gli errori del PDB che stai vedendo non hanno importanza. Controlla il valore restituito da printf. Restituisce il numero di caratteri che è stato stampato. printf restituisce i caratteri in una finestra della console separata e non nella vista di output. – Superman

+0

come posso accedere alla finestra della console separata? – Qasim

2

Printf di solito ha bisogno di una nuova riga per aggiornare la console. Aggiungi un carattere '\ n' alla fine e riesegui il programma.

+0

Purtroppo non c'è ancora uscita! Mi chiedo che cosa potrebbe causare questo. Molto assurdo – Qasim

+0

Se si dovesse rimuovere SDL, printf funzionerà correttamente? –

+0

Ancora non funziona. – Qasim

5

Tutto funziona, ho persino visualizzata un'immagine sullo schermo, ma non posso programma senza dover in qualche modo ai messaggi in uscita

Presumo che ciò significa che tu abbia una finestra a vostra disposizione, non un console.

Se si desidera registrare qualcosa per la finestra di output, utilizzare OutputDebugString:

invia una stringa al debugger per la visualizzazione.

void WINAPI OutputDebugString(
    __in_opt LPCTSTR lpOutputString 
); 

HeaderWinBase.h (includono Windows.h)

-2

c'è una finestra di output di Visual Studio quando si esegue/debug del programma. Dovresti essere in grado di vedere l'output in quella finestra.

12

Visualizzare le proprietà del progetto, passare a linker-> system-> subsystem e modificarlo alla terza opzione, CONSOLE.Dovrebbe farlo

7

In Linker -> System nelle proprietà del progetto, controllare che il sottosistema sia "Console (/SUBSYSTEM:CONSOLE)".

Ciò causa la visualizzazione di una finestra della console separata quando si esegue il programma. Se il tuo attuale punto di ingresso non è main, allora dovrai cambiarlo se lo fai comunque.