私たちのスタイルのほとんどはかなり理解しやすいですが、現時点では完全に一貫しているわけではありません。変更箇所周辺のコードのスタイルと一致させる必要がありますが、そのコードに一貫性が無い場合や不明瞭な場合は以下のガイドラインに従ってください:
/* */
#ifndef THIS_FILE_H
、#define THIS_FILE_H
、...、#endif
) ではなく、ヘッダファイルの先頭で #pragma once
を使います。#ifdef DEFINED
と #if defined(DEFINED)
#if defined(DEFINED)
形式を使ってください。#if
に移行する場合を除き、既存のコードを別のスタイルに変更しないでください。#
と if
の間に空白を追加します。#
の後ろに4つスペースを入れて開始します。わかりやすいように例を示します:
/* Enums for foo */
enum foo_state {
FOO_BAR,
FOO_BAZ,
};
/* Returns a value */
int foo(void) {
if (some_condition) {
return FOO_BAR;
} else {
return -1;
}
}
Clang-format は LLVM の一部で、誰もが手動で整形するほど暇ではないため、コードを自動整形することができます。私たちは、上記のコーディング規約のほとんどを適用する設定ファイルを提供しています。空白と改行のみを変更するため、省略可能な括弧は自分で付け加えることを忘れないでください。
Windows で clang-format を入手するには full LLVM インストーラを使い、Ubuntu では sudo apt install clang-format
を使ってください。
コマンドラインから実行する場合、オプションとして -style=file
を渡すと、QMK ルートディレクトリ内の .clang-format 設定ファイルを自動的に見つけます。
VSCode を使う場合は、標準の C/C++ プラグインが clang-format をサポートしますが、その他にも 独立した拡張機能 があります。
幾つかのコード (LAYOUT マクロのような)が clang-format によって破壊されるため、これらのファイルで clang-format を実行しないか、整形したくないコードを // clang-format off
と // clang-format on
で囲みます。