【问题标题】:Using clang-format with C++/CLI "for each"将 clang-format 与 C++/CLI “for each”一起使用
【发布时间】:2020-03-18 14:41:48
【问题描述】:

我目前尝试使用 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)
   {
   }

我读到here这个:

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

我试过了:

ForEachMacros:
  - for each
  - foreach
  - Q_FOREACH
  - BOOST_FOREACH

然后这个:

ForEachMacros:
  - 'for each'

还有这个:

  - "for each"

甚至这个:

  - "for\s+each"

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

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

谢谢!

【问题讨论】:

  • 您要达到的最终格式是什么,是否像上面的“之前:”示例中的那样?
  • @ZedLepplin 是的,实际上我想要for each (..foreach 分派到两个不同的行不会编译。 从词法上来说,看起来for each 是一个包含空格的单个标记...???
  • 我的 vs 2019 并没有像你的版本那样做。我几乎不会更改默认设置,所以我认为我的格式规则设置为默认值。我去看看。
  • @ZedLepplin 我有 VS2019 16.1.6,我使用 clangformat.exe v 9.0.0。我使用 --config Microsoft 生成了第一个 .clang-format 文件,当时就出现了问题。我对其他设置进行了一些更改,for each 问题仍然存在。

标签: c++-cli visual-studio-2019 clang-format


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-09-24
    • 1970-01-01
    • 2021-07-08
    • 2021-01-19
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 2011-09-11
    相关资源
    最近更新 更多