宏转换为Contexpr

[原文发表地址]Convert Macros to Constexpr

[原文发表作者]Augustin Popa

Visual studio 2017 15.8 版本已经在预览阶段可以下载使用了。 今天,Preview 3 的版本已经发布了, 这个版本里我们做了很多功能的提升,来提高开发人员开发体验。 15.8 里面其中一个红药的主题就是代码现在化, 宏是这里面的关键角色。 在15.8 Preview 1, 我们已经可以展开宏的快速信息提示文本,现在,在Preview 3, 我们很高兴的宣布VS可以将他们转化为现代C++ contexpr表达式,并提供可相应的选项来完成这个转换, 这个方式可以帮你清理你的代码,使你的代码更加现代化。这个功能(和通用编辑器其他功能一样) 是可以配置,也可以根据自身的需求打开或者关闭。

Macro 转为常量的快速修改

当你在编辑器里查看你的代码的时候,你可能会注意到一些”...” 在#define 指令中,某些宏的下面。这些“...” 被称为建议,是另外一种关于错误的单独的分类(红色的曲线;对大多数代码问题), 和警告(绿色的曲线,一些简单的代码问题)。一个“建议”是涵盖一些低风险的代码问题。

当选中这个选项, 一个预览窗口将会出现,展示你将要所做的修改:

一旦这个修改被应用, 代码编辑器里就会出现转换为常量的表达式:

这个功能对常量有用,对一些基本的表达式,像宏一样的方法也可以应用:

你可能会注意到,上面代码里面的“Max” 下面没有’”...”, 对于像宏一样的方法, 我们还没有充分全面的预处理来保证这个转换是可以成功,这是为了保证VS的集成开发环境的稳定性能。 因为我们只想对那些我们认为的合理转换 去显示”建议“的提示。 虽然我们不会显示”...“指示器,然而,你还是可以能够从灯泡菜单项里找到转换的选项, 但你在预览窗口里面选择应用改变的时候然后我们才会在充分处理宏的转换。 这样, 宏就会被转换为下面的模板:

通常,你是可以选择自己将宏转为contexpr, 但是当你看不到”...”时也不要期待它一直起作用。不是所有的宏都是可以转化为contexpr的, 因为宏的范围很宽泛, 很多宏和contexpr或者contexpr表达式是无关的。

工具>选项 配置

你可以在工具>选项>文本编辑器>C/C++>查看> 宏转换为常量 里配置。在那里,你可以根据自己的喜好选择是否显示为建议(默认操作),警告(绿色下划线),错误(生成中断,红色曲线), 或者 无(隐藏文本编辑提示器)。

请给我们反馈!

这是我们第一次发布这个功能, 我们会非常感谢如果你们能在下面给我们留言反馈如何让我们做的更好。 如果你们遇到任何产品问题, 请通过集成开发环境里的“帮助>发送反馈>报告问题 "让我们知道。