我将很快发布一款 Windows 视频游戏。我在我的代码中离开了不同的地方
std::cout << "Debug stuff" << calculateThisAndThat() << "\n";
这当然是在 Debug 模式的控制台窗口中打印的。
void openConsoleWindow() {
#ifdef _DEBUG /// console window opens only in **debug** mode
AllocConsole();
HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE);
int hCrt = _open_osfhandle((long) handle_out, _O_TEXT);
FILE* hf_out = _fdopen(hCrt, "w");
setvbuf(hf_out, NULL, _IONBF, 1);
*stdout = *hf_out;
HANDLE handle_in = GetStdHandle(STD_INPUT_HANDLE);
hCrt = _open_osfhandle((long) handle_in, _O_TEXT);
FILE* hf_in = _fdopen(hCrt, "r");
setvbuf(hf_in, NULL, _IONBF, 128);
*stdin = *hf_in;
HWND hwndMyWnd = GetConsoleWindow();
SetWindowPos(hwndMyWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_DRAWFRAME | SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); // ALWAYS ON TOP
#endif
}
在Release 模式下,任何地方都不会明显打印任何东西(或者我认为如此)。我应该添加
#ifdef _DEBUG
我代码中的每个 std::cout,出于任何原因?
最佳答案
你可能想要。
即使您没有打印任何东西,您仍然在执行
calculateThisAndThat()
。熟练的逆向工程师不需要花费很多时间来重新启用控制台窗口。
话虽这么说,但我建议将来使用不同的日志记录例程(iostreams 因速度慢而受到很多不好的评价),您只需使用一个编译时设置就可以关闭它。
p>关于c++ - 没有明显目标的 std::cout 留在发布的代码中是一件坏事吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40345433/