【发布时间】:2022-08-02 14:17:47
【问题描述】:
我正在对代码覆盖率进行单元测试,确保每个可能的代码路径都由单元测试执行。
我发现只包含一个 break 的 switch/case 元素可以设置断点,但是 break 永远不会被击中,控制只是跳转到 switch 的末尾,大概是因为编译器优化。
一位同事争辩说我没有对该路径进行充分的单元测试。
所以,我搜索并找到了一个 S.O 问题——我再也找不到了——关于什么都不做的 C++ 代码。唯一没有针对生成编译器或静态代码分析错误进行优化的答案是[]() {}()。
这是有效的,因为它的断点会被命中。
问题解决了,我猜,但这实际上是做什么的?
-
[](){}是一个什么都不做的 lambda 函数。额外的()调用该函数。但是不知道为什么不能优化。
标签: c++