VS2022中Lambda表达式内if语句自动缩进异常问题咨询
VS2022 Lambda表达式内部代码缩进异常的解决办法
这种情况基本是VS2022的C++代码格式化配置未正确适配Lambda内部代码的缩进规则,按以下步骤排查调整:
- 打开VS2022的选项面板:顶部菜单栏选「工具」→「选项」
- 依次展开「文本编辑器」→「C/C++」→「格式化」→「缩进」
- 重点检查以下设置:
- 勾选「Lambda表达式」分类下的「缩进Lambda体」
- 确认「常规缩进」里的「缩进大小」和「制表符大小」保持一致(推荐设为4)
- 若调整后仍有问题,可重置C/C格式化配置:右键点击「C/C」→「格式化」节点,选择「重置」,重启VS后再测试格式化
另外,如果你安装了Clang-Format这类第三方格式化插件,可能是插件规则覆盖了VS默认设置,可暂时禁用插件或调整插件配置文件来验证。
代码对比
格式化后异常的代码(VS2022中)
// This code is my VS2022 // ... for_each(v.begin(), v.end(), [&evenCount](int n) { cout << n; if (n % 2 == 0) { cout << " is even " << endl; ++evenCount; } else { cout << " is odd " << endl; } }); // ...
预期的正确格式(MSDN示例)
// This code is MSDN example // ... for_each(v.begin(), v.end(), [&evenCount] (int n) { cout << n; if (n % 2 == 0) { cout << " is even " << endl; ++evenCount; } else { cout << " is odd " << endl; } }); // ...
内容的提问来源于stack exchange,提问作者na_sacc
相关产品推荐
相关产品推荐

