Linux'ta eğlenmek için bir SDL2 uygulaması geliştirdim, ancak Windows, Linux kullanıcısı olmayanları da test etmeden bile geliştiriyor (Windows'um yok, hiç sahip olmadım). Bunun için mingw kullanıyorum, çapraz derleme. Her şey güzel ama tek bir şey çalışıyor. Uygulama, C'deki basit printf() kullanarak bazı komut satırı anahtarlarını/mesajlarını/yardımlarını da içerir. Ancak, Windows'ta basit bir şekilde çalışmaz, kullanıcılara göre hiçbir çıktı gösterilmez. Bunu buldum: setvbuf (stdout, NULL, _IONBF, 0);
ama yardımcı olmadı. Ayrıca, çeşitli belgeler ve -mconsole
içinde mingw -mwindows
geçişi buldum ama Windows iyi bilmiyorum beri, bu sisteme (Windows) bu garip işler nasıl çalışması gerektiğini hiçbir fikrim yok. Temel olarak, Linux'taki gibi benzer bir çözümü isterim: eğer bir terminal penceresinden başlıyorsanız, stdout'u görebilirsiniz, ancak eğer görünseler, hiç görülemezler, bu mesajlar için hiçbir pencere açık/gösterilmez.C printf() wining with win32
cevap
Linux programlarıyla aynı davranışta penceresiz bir alternatif biliyorum.
-mwindows
olmadan (diğer pek çok şeyden başka), çıktınız stdout'a yönlendirilecek ve cmd cinsinden görüntülenecektir (ve diğer işlemler ile stdin borulara yönlendirilebilir), ancak eğer cmd olmadan çalıştıracaksanız çıktı için ekstra bir konsol penceresi açın.
-mwindows
stdio artık konsolla bağlantılı değil. Çıktıyı yeniden yönlendirebilirsiniz, ancak görmüyorsunuz (ör. your_program.exe | cat
çıkış gösterecektir, ancak standart pencerelerde cat
yoktur). Bu mod, konsol penceresini otomatik olarak açmaz. Konsolu el ile oluşturabilir (veya ana işlem konsolunu devralabilir) ve stdout'u ona yönlendirebilirsiniz (freopen("CONOUT$", "w", stdout)
ile), ancak bu 'gerçek' stdio olmaz ve diğer işlemlere (ki hala sizin için iyi olabilir.).
- 1. C++ Win32
- 2. printf değişkeni C
- 3. C- printf olmadan
- 4. C# WebClient with https
- 5. C# ile Win32 olayları oluşturma #
- 6. Çift Arabelleğe Alma? Win32 C++
- 7. Win32/C++ Kullanarak PNG Okuma
- 8. Win32 C/C++ Görüntüyü bellek arabelleğinden yükleme
- 9. printf
- 10. Win32:
- 11. LCC Printf kayan nokta
- 12. GCC çıktıları "printf" ile tanımsız "hatası", printf
- 13. WIN32
- 14. Win32 API?
- 15. C++ 11 Openpoint with clang
- 16. Sorun Giderme C Programlamada Printf Yazdırma
- 17. C printf% d ve% f kullanarak
- 18. printf ve wprintf, tek C kodunda
- 19. printf(), scanf()
- 20. C#/Win32 ile notepad'e yazı yazmak
- 21. Başka bir printf olmadığı sürece Printf çalışmaz
- 22. Alır() with fgets()
- 23. Float ve printf
- 24. Text.Printf with Data.Text?
- 25. Printf montaj
- 26. with with in
- 27. `char`` int` öğesine dönüştürülürse `printf``de` `% c```` niçin var?
- 28. java eşdeğeri printf ("% *. * F")
- 29. printf() nasıl bildirilir?
- 30. Visual Studio 2010'da bir Win32 uygulamasında printf çıktısı nasıl görüntülenir?
Anlıyorum ve teşekkürler. -mwindows olmadan yeni konsol otomatik olarak veya sadece ilk çıkışta açılacak mı? Bir şekilde zaten bir konsol veya yeni bir _would_ açık olduğumu test edebilir miyim? Stdio arabelleğe alınmış mı? Sanırım printf() 'in ve sonra sadece freopen() hile yapsaydı, eski mesajlar kaybolur, sağa (-mwindows ile) demek? Genel olarak, yeni açılan cmd penceresinin (ve eğer varsa bir tane varsa) -mwindows olmadan kontrol edilmesi mümkündür. Yani, kapatıyorum ya da zaten sahip olduğumu test edin. Birçok olası başlangıç soruları için özür dilerim. Teşekkürler! –
Windows uzmanı değilim, ama çoğunuzun doğru olduğu anlaşılıyor. Sanırım karışıklıkların çoğu, pencereler konsol ve pencere uygulamalarını temelden ayırdığı için oluyor. Konsol uygulaması konsolu penceresi için 'ana 'öğenizden önce bile görünür ve programınız çıktığında otomatik olarak kapanır. Windows uygulaması için, ya ebeveynin işlem konsoluna eklemek için ya AllocConsole 'ya da 'AttachConsole (-1)' el ile manüel ya da isteğe bağlı olarak bir komut satırı geçişi yapın; Daha sonra stdin/stdout/stderr'yi yeniden bağlar ve gerekiyorsa arabelleklemeyi devre dışı bırakırsınız. – keltar
Tekrar teşekkürler! Benim için özellikle kendiminkine göre bir pencere uzmanısınız :) Bu önerilen fonksiyonlara bakacağım. –