デフォルトでは、Emacsはプリプロセッサコードをインデントしません。私はそれが現在では時代遅れの歴史的なルーツを持っていることを知っています。emacsのCコードとしてプリプロセッサディレクティブをインデントする
しかし、多くの#ifdefがインデントされていないコードを読み込むのは難しいです。代わりに私が今何を得るの
void myfunc() {
int foo;
#ifdef BAR
printf(foo);
#endif
return foo;
}
:
だから私はemacsの自動インデントが私にそのような何か与えたいと思い、あなたがハッカーをemacsのその問題の
void myfunc() {
int foo;
#ifdef BAR
printf(foo);
#endif
return foo;
}
どれリードを:) ?
でなければなりません
はブロックスコープが重大なミスである持っています。これはあなた自身でこれを発見するために数十キロ離れています。 –
+1〜@ハンス。第2の形式は実際にははるかに明確なIMOです。ファイルの内容を実際に変更しているので、ファイルの「スコープ」レベルでインデントする方が賢明です(インデントがまったくない)。私は、プリプロセッサディレクティブに関してスコープについて話すことがどれほど有効であるのかよくわかりません。 – JeremyP
プリプロセッサのコードがどのようにインデントされているか気にするならば、あなたはそれが**あまりにも**あることを意味します。 '#ifdef'は実際のソースファイルには絶対含まれません。これはGNUの 'screen'のような読めないレガシーコードの悩みです。システムごとの調整の代わりに、どこかでヘッダファイル内の壊れたシステムを修復するための条件を始めて隠すための移植可能なコードを書いてください。オプションの機能の場合は、同様の操作を行い、その機能が無効になっている場合は、その機能のマクロ/関数呼び出しを '0'または'(void)0'に展開します。 –