clang-format 在自动格式化时忽略`**`

问题描述 投票:0回答:1

在我们部门,我们正在使用 C++ 的简化实现,让我们的工程师对其计算进行编码,然后在编译之前将其转换为 C++。 为了使整个代码库、C++ 和简化的实现达到相同的风格,我们希望使用格式化程序,最好是 clang-format。不幸的是,一种简化不适用于 clang-format:

  • 不能使用
    *
    &
  • 定义指针和引用
  • 相反,权力是用双星号书写的
    **
    ,f.i.
    a = 5**2
    而不是
    a = pow(5, 2)

因此,clang-format 将

**
解释为“指向指针的指针”并应用格式,这打破了等式。

问题

有没有什么方法可以使用 clang-format 来实现:

  • 完全停用指针格式(我尝试了所有指针样式选项,但可能错过了正确的选项)
  • (最好)仅将 **
     视为数学运算符
  • 排除/忽略**
    通过正则表达式包含进行格式化,例如在Pylint中(尚未找到此选项)
最后的方法还可以包括使用其他工具,例如 uncrustify,但我

真的避免这个。

c++ clang-format autoformatting
1个回答
0
投票
正如评论中所猜测的那样,我的建议是在格式化期间暂时用另一个运算符替换

**

 运算符。当然,这要求目标运算符不被使用:当您需要解析器来理解结果时,
escaping不能很好地工作。理想情况下,它应该具有几乎相同的词汇长度,以避免恢复原始后格式错误。

如果替换操作符与实际操作符具有几乎相同的

优先级,这也会有所帮助。这里没有具体说明,但它肯定至少有乘法。

所有这些考虑因素表明

->*

:它已经是一种罕见的运算符,其优先级仅比 *
/
%
 低一个,并且根据空白偏好而长或短一个字符.

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.