我编写了一个库,并在程序中使用该库。我经常对程序代码进行更改,在打开断言的情况下运行测试,然后如果测试通过,我在关闭断言的情况下运行基准测试,以测量我刚刚所做的更改对性能的影响。我还想在我的库中为测试打开断言,并在库中为基准关闭它们。所以我经常需要在程序和库中同时切换assert设置。
匹配库和程序(使用库)的断言设置(NDEBUG)不能是手动的,因为出错意味着未定义的行为,因为标头中有断言(冲突的定义导致未定义的行为),实际上我得到了崩溃当我使用 assert-on 库构建 assert-off 程序时使用 GCC 程序。我无法找出执行此操作的标准方法是什么。我正在考虑让我的库构建系统安装两个名为 libfoo-1.0 和 libfoo-assert-1.0 或类似名称的二进制文件(如果它们包含在错误的断言设置(NDEBUG)中,可能还有抱怨的头文件)。
在库和程序之间匹配断言设置的最佳方法是什么,以便同时切换两者的断言设置容易、快速且不易出错?