【问题标题】:clang-format: Do not add white spaces to include statement/method referencesclang-format:不要添加空格来包含语句/方法引用
【发布时间】:2018-06-09 12:06:38
【问题描述】:

我正在使用clang-format 来格式化代码。

我注意到它添加了空格来包含语句和完全限定的方法引用。

给定以下(“格式正确”)的代码:

#include bli/bla/blub/_foo;

fun()
{
    bli/bla/blub/_foo::bar();
}

当通过clang-format 运行它时,它会变成这样:

#include bli / bla / blub / _foo;

fun() { bli / bla / blub / _foo::bar(); }

我不希望在/ 之前和之后添加空格,因为路径可能不会被修改。花括号的位置无关紧要。

我不确定如何做到这一点,我查看了文档here,但没有看到相应的style 选项。有关解决此问题的任何想法/帮助?

【问题讨论】:

  • 原谅我的无知,你的代码是用什么编程语言编写的? :-)

标签: code-formatting clang-format


【解决方案1】:

该代码不是有效的 C++,因此 clang-format 的行为与您预期的不同(我假设 C++ 是您想要的)。

  • 语句#include bli/bla/blub/_foo;的头部路径前后应有双引号,分号省略。

  • 对于 C++ 中的完全限定符号,您必须使用 :: 作为分隔符,因此 bli/bla/blub/_foo::bar(); 也不是有效的 C++。

在包含语句中,由于缺少双引号,clang-format 将bli/bla/blub/_foo 视为“bli 除以bla 除以blub 除以_foo::bar()” - 就像任何 C/C++ 编译器一样会 - 并在 / 和操作数之间添加空格,这似乎是明智的。

如果您使用正确的 C++ 代码提供 clang 格式,例如:

#include "bli/bla/blub/_foo"

void fun()
{
    bli::bla::blub::_foo::bar();
}

你会得到:

#include "bli/bla/blub/_foo"

void fun() {
  bli::bla::blub::_foo::bar();
}

【讨论】:

  • 是的,我明白了。我正在使用 C++ 方言,所以我认为使用 clang-format 不会那么好。但是语法是正确的。
  • @BullyWiiPlaza 明白了。 clang-format auto 检测到该语法为 C++,但您可以根据需要对其进行自定义。不幸的是,我找不到避免在二元运算符及其操作数之间插入空格的选项,即a/b 总是转换为a / b
猜你喜欢
  • 2022-09-27
  • 2014-07-26
  • 2016-01-03
  • 2017-04-23
  • 1970-01-01
  • 2013-07-02
  • 2016-07-04
  • 1970-01-01
  • 2020-04-05
相关资源
最近更新 更多