首页 > 解决方案 > 将 clang-format 与 C++/CLI “for each”一起使用

问题描述

我目前尝试使用clang-format(版本 9.0.0)格式化 C++/CLI 代码。我不知道如何处理for each语句。

前:

for each (auto i in I)
{
}

之后(例如,Visual Studio 中的 CTRL-K/CTRL-D):

for
   each (auto i in I)
   {
   }

我在这里读到:

...您可能想要更改 ForEachMacros 以添加“for each”

我试过这个:

ForEachMacros:
  - for each
  - foreach
  - Q_FOREACH
  - BOOST_FOREACH

那么这个:

ForEachMacros:
  - 'for each'

和这个:

  - "for each"

甚至这个:

  - "for\s+each"

没有任何效果。有没有办法让它工作?在文档中,它 ( ForEachMacros) 是宏的向量...所以我看不到 a 如何创建一个内部带有空格字符的宏!

有人可以帮我解决这个问题吗?

谢谢!

标签: c++-clivisual-studio-2019clang-format

解决方案


您可以通过定义自己的宏来解决此问题,例如#define FOR_EACH for each,并使用该宏而不是for each. 例如FOR_EACH(auto i in I)
现在 clang-format 将忽略它。

您可以将其添加到您的.clang-format文件中ForEachMacros: ['FOR_EACH'],因此它被作为循环处理,而不是用于格式化的函数调用。虽然不需要修复编译。


推荐阅读