1

我编写了一个库,并在程序中使用该库。我经常对程序代码进行更改,在打开断言的情况下运行测试,然后如果测试通过,我在关闭断言的情况下运行基准测试,以测量我刚刚所做的更改对性能的影响。我还想在我的库中为测试打开断言,并在库中为基准关闭它们。所以我经常需要在程序和库中同时切换assert设置。

匹配库和程序(使用库)的断言设置(NDEBUG)不能是手动的,因为出错意味着未定义的行为,因为标头中有断言(冲突的定义导致未定义的行为),实际上我得到了崩溃当我使用 assert-on 库构建 assert-off 程序时使用 GCC 程序。我无法找出执行此操作的标准方法是什么。我正在考虑让我的库构建系统安装两个名为 libfoo-1.0 和 libfoo-assert-1.0 或类似名称的二进制文件(如果它们包含在错误的断言设置(NDEBUG)中,可能还有抱怨的头文件)。

在库和程序之间匹配断言设置的最佳方法是什么,以便同时切换两者的断言设置容易、快速且不易出错?

4

1 回答 1

1

通常,构建系统被设置为执行不同的构建(例如调试/发布、多线程/单线程)。生成的库和可执行文件要么放置在不同的目录中,要么具有不同的名称来区分它们。这没有什么不同。

如果您觉得您需要为 assert/noassert 提供额外的构建类型,那么只需添加这个额外的构建类型。唯一的问题是命名约定,如果没有指定特定的构建类型,默认情况下会做什么。

于 2012-07-27T21:30:28.367 回答