Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Memaparkan Output Konsol dalam Program Windows C dengan Titik Masuk WinMain?
Mengoutputkan Teks Konsol dalam Windows C
Aturcara C asli yang dijalankan pada Windows boleh menggunakan antara muka baris arahan untuk memaparkan output konsol. Walau bagaimanapun, jika titik masuk program ditakrifkan sebagai WinMain, cara melihat data yang dicetak menggunakan fungsi output standard seperti std::cout tidak dapat dilihat dengan segera.
Penyelesaian:
Terdapat beberapa pendekatan untuk mencapai output konsol dalam senario ini:
1. Menggunakan Fungsi Ubah Hala:
Laksanakan fungsi ubah hala tersuai yang memintas strim I/O standard dan menghalakannya ke konsol. Berikut ialah contoh menggunakan API Win32:
guicon.cpp
#include <windows.h> #include <stdio.h> #include <fcntl.h> #include <io.h> #include <iostream> #include <fstream> using namespace std; void RedirectIOToConsole() { int hConHandle; long lStdHandle; FILE *fp; AllocConsole(); GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo); coninfo.dwSize.Y = MAX_CONSOLE_LINES; SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize); lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "w"); *stdout = *fp; setvbuf(stdout, NULL, _IONBF, 0); lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "r"); *stdin = *fp; setvbuf(stdin, NULL, _IONBF, 0); lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "w"); *stderr = *fp; setvbuf(stderr, NULL, _IONBF, 0); ios::sync_with_stdio(); }
Kemudian, masukkan fungsi ini dalam program anda dan panggilnya sebelum menggunakan fungsi output standard.
2. Mengubah hala Output Konsol ke Fail:
Pilihan lain ialah mengubah hala output konsol ke fail, yang kemudiannya boleh dilihat menggunakan editor teks. Ini boleh dilakukan dengan mengubah suai baris arahan program:
program.exe 1>output.txt 2>&1
Dalam contoh ini, output standard dan ralat standard dialihkan ke fail "output.txt".
3 . Menggunakan Kompilasi Bersyarat:
Jika program anda menyasarkan pembangunan atau penyahpepijatan secara khusus, anda boleh menggunakan kompilasi bersyarat untuk memasukkan output konsol hanya apabila perlu. Sebagai contoh, anda boleh membungkus pernyataan output konsol anda dalam blok #ifdef _DEBUG.
Contoh Pelaksanaan:
test.cpp
#include <iostream> #ifdef _DEBUG int main() { std::cout << "Hello, world!" << std::endl; return 0; } #endif
Secara lalai, program ini tidak akan mengeluarkan apa-apa. Walau bagaimanapun, apabila disusun dengan makro prapemproses _DEBUG yang ditakrifkan, ia akan mencetak "Hello, dunia!" ke konsol.
Atas ialah kandungan terperinci Bagaimana untuk Memaparkan Output Konsol dalam Program Windows C dengan Titik Masuk WinMain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!