Visual Studio C++ - 确定是在调试版本还是发布版本中
Visual Studio C++ - Determining if in a debug or release build
在不添加特殊的 -D 生成选项的情况下,是否有方法可以确定生成是配置管理器设置的"调试"还是"发布"?我试过定义"NDEBUG"或"_DEBUG",但似乎它们不是自动定义的,因此引用任何一个都是徒劳的。 用户只是想知道构建在启动时是"发布"还是"调试",这样他们就可以知道在哪个版本上运行自动性能测试。 有配置属性$(Configuration(,但如何以编程方式引用它是一个难题,假设它可以完成。也许可以检查优化级别(/Ox(...不知何故。无论如何,也许这是不可能的,用户只需要假设。我看过其他问题,但由于它们似乎不太符合这个难度,我想我会把它扔进去,看看会发生什么。我告诉他,如果他们能检查可执行文件的大小,那么"调试"的大小是"发布"大小的两倍;他们不太在乎这个概念。谢谢。
除了在编译时检查定义(如NDEBUG
或_DEBUG
或您自己设置的其他定义(并基于此输出消息之外,答案是"不,您通常无法在运行时以编程方式确定可执行文件是如何编译的"。
但是在编译时这样做相当容易:
#if defined _DEBUG
std::cout << "debug buildn";
#else
std::cout << "release buildn";
#endif
然后,只需确保您的构建系统设置您基于检查的任何定义......应该不会花很长时间。
相关文章:
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 导入库可以跨dll版本工作吗
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 在clang++预处理器中确定gcc工具链版本
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 不同的Visual Studio版本中缺少.dll
- 用符号版本替换对函数的所有调用
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 我需要分发哪些版本的可再分发文件
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- 在运行时读取 libstdc++ 版本
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- Vulkan SDK 版本 1.1.85.0 在 Kubuntu 18.10 上链接
- 如何正确实现与基类不同的版本?
- 从预处理器获取 Windows 版本(C++ Win32)
- 表达式 SFINAE:如何根据类型是否包含具有一个或多个参数的函数来选择模板版本
- Visual Studio 2008版本内部版本未装饰DLL导出
- 哪个QT版本/内部版本更稳定