C フォーマッターは、貼り付けた C のコードをタブで再インデントし、ハイライト表示する KivTools の整形ツールです。文字列・コメント・プリプロセッサ行には手を入れず、コンパイルや構文検証も行いません。
ブラウザ内でローカルに実行C のコードをエディターに貼り付けて整形ボタンを押すと、波かっことセミコロンの後ろで行を分割し直し、タブでインデントした結果を下のパネルにハイライト表示します。
文字列やコメント、プリプロセッサ行には手を入れないテキストレベルの整形で、コンパイラーではありません。エディターには元の入力が残るので、二つを見比べられます。
実測: char *p="a;b}"; の文字列内のセミコロンと波かっこはそのまま残り、コメント /* block ; { } */ の記号も変化せず、行継続を含むマクロ(#define LONG(a) do { \ ...)は改行も含めて一字一句そのまま戻ります。#define X {1,2} が 1 行のままなのも同じ理由です。
動かすのは空白だけ、というのがこのツールの役割です。マクロ内の正確な空白や行継続に意味があるコードでは、プログラムを変えてしまうリスクを避けて手を付けません。
文法ではなく文字列の走査で整形するため、詰め込んだ 1 行はルールに従って展開されます。struct S{int a;char *b;};typedef struct S S; は 4 行になりますが、末尾の };typedef struct S S; は 1 行のままです。式の空白は組み替えません。
コンパイルも構文解析も検証も行いません。セミコロンの欠落やかっこの不整合があってもエラーにはならず、それらしいレイアウトを返すだけなので、出力は読みやすい下書きとして扱い、そのあとコンパイラーやリンターに通してください。
整形はページ内だけで完結します。64 KB のサンプル(4,000 文、出力約 82 KB)は Chrome で 1 秒未満で返り、実行中にネットワーク要求は一切発生しません。接続がなくても動作します。
出力が約 120,000 文字を超えると、タブを止めないようハイライトを止めてプレーンテキストに切り替わります。それほど大きいファイルは、入力を分割するかローカルのフォーマッターを使う方が快適です。