没有明显目标的 std::cout 留在已发布的代码中是一件坏事吗?
Is std::cout with no apparent target a bad thing to leave in released code?
我将很快发布 Windows 视频游戏。我在我的代码中离开了不同的地方
std::cout << "Debug stuff" << calculateThisAndThat() << "\n";
这当然是在 Debug 模式下在控制台 window 中打印出来的。
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,出于任何原因?
std::cout
与一些 C++ 相比非常慢 code.it 可能会显着降低你的速度,所以不要让它 运行 在你的发布中。
你可能想要。
即使你没有打印任何东西,你仍然在执行 calculateThisAndThat()
。
熟练的逆向工程师不需要花费很多时间来重新启用控制台window。
话虽这么说,但我建议将来使用不同的日志记录例程(iostream 因速度慢而受到很多不好的评价),您只需使用一个编译时设置就可以关闭它。
我将很快发布 Windows 视频游戏。我在我的代码中离开了不同的地方
std::cout << "Debug stuff" << calculateThisAndThat() << "\n";
这当然是在 Debug 模式下在控制台 window 中打印出来的。
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,出于任何原因?
std::cout
与一些 C++ 相比非常慢 code.it 可能会显着降低你的速度,所以不要让它 运行 在你的发布中。
你可能想要。
即使你没有打印任何东西,你仍然在执行
calculateThisAndThat()
。熟练的逆向工程师不需要花费很多时间来重新启用控制台window。
话虽这么说,但我建议将来使用不同的日志记录例程(iostream 因速度慢而受到很多不好的评价),您只需使用一个编译时设置就可以关闭它。