字下げスタイル
字下げスタイルの主な違いは、複数の文で構成される制御の並びにおける中括弧の配置にある。以下の表は各スタイルの配置を示したもので、関数宣言における配置とは異なる場合がある。一貫性を持たせるため、各スタイルで好まれる字下げの深さに関わらず、ここでは4スペースで統一している。
ストロヴストルップ・スタイルはビャーネ・ストロヴストルップがC++で使ったK&Rスタイルで、ストラウストラップのプログラミング入門 C++によるプログラミングの原則と実践やThe C++ Programming Languageといった彼の著書で使われている。
前述のスタイルと異なり、cuddled else (elseの前後に}と{を置くスタイル) を使わない。したがってストロヴストルップ式では次のようになる。
ストロヴストルップはK&Rスタイルをクラスに拡張しており、次のように表記される。
ストロヴストルップはpublic:とprivate:を字下げしない。またこのスタイルでは、関数の次の行で括弧を開く一方で、クラスについてはクラス名と同じ行の中で括弧を開いている。
ストロヴストルップ式では短い関数を1行にまとめてしまうことを許している。ストロヴストルップのスタイルはEmacsで利用できる名前付き字下げスタイルである。ストロヴストルップはC++でもK&R由来のスタイルを使うことを推奨しており、彼の最近の著書であるC++ Core Guidelinesで言及されている。
BSD/オールマンやホワイトスミス・スタイルと同様、GNUスタイルでも中括弧だけで行を構成する。中括弧は空白2個ぶん字下げされ、その中の文はさらに空白2個ぶん字下げされる。ただし関数定義では字下げしない。
リチャード・ストールマンが広めたスタイルであり、LISPのコードを書いた経験がベースにあると考えられる。Lispではブロックに相当するもの (progn) はファーストクラスのデータ要素であり、新たな字下げレベルを与えることで強調できるが、Cではブロックは単なる構文である。このスタイルは1960 - 1970年代にあるALGOLやXPLの書籍にも見られる。字下げとは直接関係ないが、GNUスタイルでは関数呼び出しの括弧の前にも空白を置く。
利点はBSD/オールマンやホワイトスミスと同様で、かつホワイトスミスの欠点とされた「中括弧が目立たない」という問題にも対処している。
GNU EmacsエディタやGNUのindentコマンドでは、デフォルトでこのスタイルでの字下げを行う。GNU関係者はほぼ全てこのスタイルを使っているが、GNU以外でも一部で使われている。
GNU Emacs を使わない場合や、類似のカスタマイズ可能なエディタを使えない場合、エディタによる自動字下げではこのスタイルはなかなか対応できない。