如何在C++程序中获得debug/release条件编译

2024-02-18

在大型 C++/Qt/QMake/qtcreator 项目中,我想执行一些测试,但仅限于使用调试标志进行编译时。

有没有办法告诉 g++ 代码的某些小部分只能在调试模式下编译?


执行此操作的标准方法是依赖于宏NDEBUG,由宏使用assert()定义于<cassert>:

#ifdef NDEBUG
  // release mode code
#else
  // debug mode code
#endif

相反的是#ifdef is #ifndef, 而且当然#else分支是可选的。

如果这个宏不起作用(无论出于何种原因),您

  1. 可以试试宏QT_NO_DEBUG,Qt 使用它来实现类似的目的Q_ASSERT(); and

  2. 应该修复它以便NDEBUG是否正确定义;这是需要的<cassert>正常工作,您使用的代码可能取决于它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在C++程序中获得debug/release条件编译 的相关文章

  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • 以编程方式读取 SQL Server 查询计划建议的 SQL 特定执行的索引?

    如果我在 SSMS 中运行此命令 set showplan xml on GO exec some procedure arg1 arg2 arg3 GO set showplan xml off GO 我获得查询执行中涉及的完整调用堆栈的
  • ComboBox DataBinding 导致 ArgumentException

    我的几个类对象 class Person public string Name get set public string Sex get set public int Age get set public override string
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • 如何使用 Castle Windsor 将对象注入到 WCF IErrorHandler 实现中?

    我正在使用 WCF 开发一组服务 该应用程序正在使用 Castle Windsor 进行依赖注入 我添加了一个IErrorHandler通过属性添加到服务的实现 到目前为止一切正常 这IErrorHandler对象 一个名为FaultHan
  • 查看 NuGet 包依赖关系层次结构

    有没有一种方法 文本或图形 来查看 NuGet 包之间的依赖关系层次结构 如果您使用的是新的 csproj 您可以在此处获取所有依赖项 在项目构建后 项目目录 obj project assets json
  • C# 数据表更新多行

    我如何使用数据表进行多次更新 我找到了这个更新 1 行 http support microsoft com kb 307587 my code public void ExportCSV string SQLSyntax string L
  • 告诉 Nancy 将枚举序列化为字符串

    Nancy 默认情况下在生成 JSON 响应时将枚举序列化为整数 我需要将枚举序列化为字符串 有一种方法可以通过创建来自定义 Nancy 的 JSON 序列化JavaScript 原始转换器 https github com NancyFx
  • 启动时的 Excel 加载项

    我正在使用 Visual C 创建 Microsoft Excel 的加载项 当我第一次创建解决方案时 它包含一个名为 ThisAddIn Startup 的函数 我在这个函数中添加了以下代码 private void ThisAddIn
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • 在 NaN 情况下 to_string() 可以返回什么

    我使用 VS 2012 遇到了非常令人恼火的行为 有时我的浮点数是 NaN auto dbgHelp std to string myFloat dbgHelp最终包含5008角色 你不能发明这个东西 其中大部分为0 最终结果是 0 INF
  • 如何在 C 中安全地声明 16 位字符串文字?

    我知道已经有一个标准方法 前缀为L wchar t test literal L Test 问题是wchar t不保证是16位 但是对于我的项目 我需要16位wchar t 我还想避免通过的要求 fshort wchar 那么 C 不是 C
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 等待 IAsyncResult 函数直至完成

    我需要创建等待 IAsyncResult 方法完成的机制 我怎样才能做到这一点 IAsyncResult result contactGroupServices BeginDeleteContact contactToRemove Uri
  • WPF DataGridTemplateColumn 组合框更新所有行

    我有这个 XAML 它从 ItemSource 是枚举的组合框中选择一个值 我使用的教程是 http www c sharpcorner com uploadfile dpatra combobox in datagrid in wpf h
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • 堆栈是向上增长还是向下增长?

    我在 C 中有这段代码 int q 10 int s 5 int a 3 printf Address of a d n int a printf Address of a 1 d n int a 1 printf Address of a
  • GCC 的“-Wl,option”和“-Xlinker option”语法之间有区别吗?

    我一直在查看一些配置文件 并且看到它们都被使用 尽管在不同的体系结构上 如果您在 Linux 机器上使用 GCC 将选项传递给链接器的两种语法之间有区别吗 据我所知 阅读 GCC 手册时 他们的解释几乎相同 From man gcc Xli

随机推荐

  • 如何在 Travis CI 中使用 python-openbabel?

    我使用 Travis CI 作为毒理学绘图项目的一部分 对于这个项目 我需要 python openbabel 作为依赖项 因此 我已将 apt get 安装程序添加到 travis yml 文件中 如下所示 已删除注释 language
  • 在matlab中计算闭合曲线(或多边形)的曲率

    考虑以下几点 x 1 34 0 92 0 68 0 25 0 06 0 34 0 49 0 72 0 79 0 94 1 35 0 35 0 54 0 68 0 84 1 20 1 23 1 32 1 34 y 0 30 0 43 0 90
  • 如何快速混合 RGBA 无符号字节颜色?

    我正在使用 c 我想使用以下代码进行 alpha 混合 define CLAMPTOBYTE color if color 255 color BYTE color gt gt 31 else color BYTE color define
  • 创建DIBection失败

    BITMAPINFO bmi memset bmi 0 sizeof BITMAPINFO bmi bmiHeader biSize sizeof BITMAPINFOHEADER bmi bmiHeader biWidth m pImg
  • NOT EXISTS 和 COUNT(*) 之间的区别

    我在两个我认为等效的语句之间得到了不同的响应 SELECT COUNT vs NOT EXISTS 在大约 50 次执行中的 49 次中 这两个语句的行为相同 但有时却不然 我的猜测是 这些语句处理锁定页面或处理更 遥远 的事情的方式之间存
  • 将到期日期格式化为 mm/yy 格式

    您好 我正在编写一个编辑文本 其中我想要 MM YY 格式的信用卡到期日期 我要实现的算法如下 如果用户输入 2 到 9 之间的任何内容 我将文本输入更改为 02 到 09 如果用户输入 1 那么我等待下一个数字并检查 int 值月份是否小
  • 执行期间检测下溢

    有没有办法在执行过程中自动检测下溢 具体来说 我认为应该有一个编译器选项来生成代码 在可能导致下溢和类似错误的数学运算之后立即检查它们 我说的是 G 编译器 C99 C 11 具有浮点控制函数 例如fetestexcept 和定义的标志 包
  • 有人可以发布一个 Swift 中 MVC 模式的好例子吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 一个实现了MVC模式的简单项目 到目前为止 我对它的情况有一个简单的了解 但我想看看实际的实现 这是
  • 从 Hive 表读取数据创建的 Spark DataFrame 的分区数

    我对 Spark 数据帧分区数量有疑问 如果我有 Hive 表 员工 其中包含列 姓名 年龄 ID 位置 CREATE TABLE employee name String age String id Int PARTITIONED BY
  • 从 github wiki 页面创建 gitbook

    我在 github wiki 中有很多文档 我想整理它并用它创作一本书 当我更新维基时 这本书也应该更新 这可能吗 欢迎来到 Gitbook 这项服务可能会对您有所帮助 https docs gitbook com integrations
  • jQuery 解析 XML 在 jQuery Mobile 列表中显示 UL UL 仅返回 XML 中的最后一项

    我正在使用 jQuery Mobile 1 1 1 和 jQuery 1 7 1 JQuery mobile 可以有一个嵌套列表 单击后可以在另一个屏幕中显示下一个 ul 看这个例子 我试图通过解析 XML 数据文件来做到这一点 我列出列表
  • Flutter如何更改ListTile中选定图块的背景颜色

    我正在尝试更改 ListTile 中选定图块的背景 我搜索并找到了以下两篇文章 但是它们都不能解决我的问题 Post1 https stackoverflow com questions 49331612 change background
  • 更改 Maven Archetype 中的包属性

    我创建了一个 Maven 原型 我的META INF maven archetype metadata xml看起来像这样
  • Univocity - 解析 CSV 时检测缺失列

    我正在使用 Univocity 库来解析 CSV 它工作得很好 但我需要一种方法来检测正在解析的文件的列数是否少于所需的列数 例如 如果我期望一个 3 列文件 其中列映射到 H1 H2 H3 那么我收到一个如下所示的文件 没有标题 V1 H
  • 从启动器菜单处理应用程序关闭事件

    我想做的是知道用户何时从 Android Launcher 的菜单关闭应用程序 长按主页按钮即可打开该菜单 我想在用户关闭应用程序时执行一些操作 实际上 我希望用户每次离开应用程序时都注销 但只要他也可以关闭应用程序 我就必须处理此事件 然
  • 支持库 24.2.1 中锚定 FloatingActionButton 的错误

    我从 24 2 0 开始就遇到这个问题 但现在我使用 24 2 1 这个错误仍然存 在 它只在 我有一个锚定的 FloatingActionButton 如下所示
  • isinstance('aaa', basestring) 和 isinstance('aaa', str) 有什么区别?

    a aaaa print isinstance a basestring true print isinstance a str true 在 3 0 之前的 Python 版本中 有两种字符串 纯字符串 和 unicode 字符串 纯字符
  • HighCharts -- MVC 3 数据库

    我正在 Visual Studio 2010 中使用 DotNet Highcharts 我正在创建一个 MVC 3 Web 应用程序 我可以通过静态分配数据来使 HighCharts 工作 我希望能够将数据从数据库发送到 HighChar
  • 如何将密码编码器附加到 Silex 中的用户界面?

    因此 我尝试创建一个新的 Silex 应用程序并使用包含的安全包 为了简单起见 我将使用基本的密码编码 根据 Silex 文档http silex sensiolabs org doc providers security html htt
  • 如何在C++程序中获得debug/release条件编译

    在大型 C Qt QMake qtcreator 项目中 我想执行一些测试 但仅限于使用调试标志进行编译时 有没有办法告诉 g 代码的某些小部分只能在调试模式下编译 执行此操作的标准方法是依赖于宏NDEBUG 由宏使用assert 定义于