c++ - 没有明显目标的 std::cout 留在发布的代码中是一件坏事吗?

标签 c++ visual-c++ std cout

我将很快发布一款 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,出于任何原因?

最佳答案

你可能想要。

  1. 即使您没有打印任何东西,您仍然在执行 calculateThisAndThat()

  2. 熟练的逆向工程师不需要花费很多时间来重新启用控制台窗口。

话虽这么说,但我建议将来使用不同的日志记录例程(iostreams 因速度慢而受到很多不好的评价),您只需使用一个编译时设置就可以关闭它。

p>

关于c++ - 没有明显目标的 std::cout 留在发布的代码中是一件坏事吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40345433/

相关文章:

c++ - dllexport 一个全内联类?

c++ - 如何在 C++ 中将列表存储在 map 中?

c++ - 为什么不能交换 std::atomic<T> ?

c++ - cout << std::ios::hex 是做什么的?

c++ - QT 应用程序的图标

c++ - 就地 Win32 ListView 编辑总是被取消

android - 使用 Android 智能手机和其他设备进行服务发现

c - 如何解决 GetSystemMetrics() 的链接错误?

c++ - Directshow 渲染流 "the parameter is incorrect"

C++文件坏位