我知道在C ++中使用assert
。想要知道在{{1}中使用assert
和{{1} }}?为什么gsl_assert
被添加到gsl库中,因为c ++已经支持assert
(即使gsl_assert
来自'C',因为我们添加了assert
以使用{{1 }}(在C ++中)?
assert
答案 0 :(得分:2)
这不是性能问题;这是灵活性的问题。
如果条件为真,它将终止(在调试版本中),通常在发行版本中不执行任何操作。
Depending on configuration,这可以:
在某些配置模式下,我认为GSL的Expects
和Ensures
宏最终会完成与assert
相同的操作。但不是全部。
但是,值得注意的是,GSL行为似乎并不依赖于构建配置(调试与发行版)。我猜(我只是在猜),对于性能至关重要的代码,明智的项目维护人员会在调试版本中选择模式#1或#2,在发行版本中选择模式#3(或可能是#2)。