38

関数に左中かっこを付けることに興味があります (ただし、if ステートメントやその他のコンテキストには興味がありません)。例えば

void foo()
{
   ...
}

Flamewarsはさておき、これを行わない正当な理由はありますか? 私は if/else ブロックと小さなブロックに同じ行の開き括弧を使用していますが、この場合、より大きなコード単位 (関数/メソッド/クラス/構造体) の視覚的な構成は、完全な一貫性よりも優れていると思います。

さらに、このスタイルに従うようにするにはどうすればclang-formatを取得できますか?

4

2 に答える 2

58

ドキュメントにあるように、で呼び出しclang-format、同梱のディレクトリに配置され-style=fileたファイルを使用して、スタイル オプションをカスタマイズします。.clang-format中かっこの配置を指定する書式スタイル オプションは と呼ばれBreakBeforeBracesます。ドキュメントから、

BreakBeforeBraces ( BraceBreakingStyle)

使用するブレース分割スタイル。

可能な値:

  • BS_Attach(構成: Attach) 周囲のコンテキストには常にブレースを付けます。
  • BS_Linux(構成: Linux) と同様Attachですが、関数、名前空間、およびクラス定義の波括弧の前で区切ります。
  • BS_Stroustrup(構成: Stroustrup) と同様Attachですが、関数定義の前でブレークし、「else」を使用します。
  • BS_Allman(構成: Allman) 中かっこの前で常に区切ります。
  • BS_GNU(構成: GNU) 中かっこの前で常に改行し、クラス、関数、またはその他の定義のものではなく、制御ステートメントの中かっこに余分なレベルのインデントを追加します。

あなたの説明に一致するスタイルは ですBS_Stroustrup。次のエントリを.clang-format

BreakBeforeBraces: Stroustrup

ドキュメントに加えて、clangformat.comにはすべてのオプションがリストされており、それらの多くが例を示しています。

于 2015-04-08T02:32:03.253 に答える