質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Clang

Clangは、プログラミング言語 C、C++、Objective-C、Objective-C++ 向けのコンパイラである。

Q&A

解決済

2回答

5510閲覧

C++ clang-formatで括弧の有無によって改行するかどうか決められるか?

brsice

総合スコア17

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Clang

Clangは、プログラミング言語 C、C++、Objective-C、Objective-C++ 向けのコンパイラである。

0グッド

0クリップ

投稿2019/08/15 10:03

編集2019/08/15 10:22

Before

1if(a == b){ 2 x = 1; 3} 4if(a == c) 5 x = 2;

After

1if(a == b){ 2 x = 1; 3} 4if(a == c) x = 2;

上記のように、ifやforの中身が1行である場合に、括弧があれば改行、なければ1行にする、というような設定は可能でしょうか?
基本的には括弧なしで改行することはしませんし、そのようなコードもあまり見ないので、そのままにするような設定でも構いません。
以前はuncrustifyを使用しており、項目ごとにignoreというフォーマットしない設定があったのでそのままにしていました(あまり調べていないのでそのようにフォーマットを強制できるかもしれませんが)。
clang-formatでも同じようなことができればと考えています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

あんまり調べていませんが・・・下記を参考にされたらどうでしょう。
ClangFormatスタイルオプション
私は1行でも必ず波括弧“{}”を入れるので1行にする設定はしていません。

投稿2019/08/15 10:45

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

以下のオプションでできます。

  • if 文で {} ブロックなしの場合に1行にする。
AllowShortIfStatementsOnASingleLine: true
  • for 文で {} ブロックなしの場合に1行にする。
AllowShortLoopsOnASingleLine: true
  • if や for 文で {} ブロックがある場合は行数に関わらず、改行する。
AllowShortBlocksOnASingleLine: false

資料

公式資料

Clang-Format Style Options — Clang 10 documentation

日本語資料

clang-format 9 の設定パラメータ まとめ

サンプル

clang-format バージョン9 で確認

.clang-format

AllowShortIfStatementsOnASingleLine: true AllowShortLoopsOnASingleLine: true

python

1 2int main() 3{ 4 // AllowShortIfStatementsOnASingleLine: true 5 if (true) return 0; 6 7 if (true) { 8 return 2; 9 } 10 11 // AllowShortLoopsOnASingleLine: true 12 for (int i = 0; i < 4; ++i) printf("a"); 13 14 for (int i = 0; i < 4; ++i) { 15 printf("a"); 16 } 17} 18

投稿2019/08/15 10:49

編集2019/08/15 10:51
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

brsice

2019/08/15 11:02

ありがとうございます。 希望通りのフォーマットになりました。 もちろん自分でも調べていたのですが、AllowShortBlocksOnASingleLineをうまく使えていませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問