このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

hide-ifdef-modeとifdef展開ツール

めちゃくちゃ昔からあったような気がするが、使う機会がなかった。モードのフックでセットするようだ。

(defun my-c-c++-mode-init ()
  (setq c-basic-offset 4)
  (setq indent-tabs-mode nil)
  (hide-ifdef-mode t)
  (hide-ifdefs)
  )
(add-hook 'c-mode-hook 'my-c-c++-mode-init)
(add-hook 'c++-mode-hook 'my-c-c++-mode-init)

キーバインドはC-c @をプレフィックスとする。

  • C-c @ d シンボル登録 define
  • C-c @ u シンボル登録 undef
  • C-c @ h ifdefを隠す hide
  • C-c @ s ifdefを出す show

gcc(g++)の -E オプションで、展開結果を見られるが、includeやマクロ定義も処理するので、ちょっと目で見るのは辛い。

展開ツールに関して次のブログエントリーに情報がある。

が、古いのと、推奨ツールが非公開という。

[追記]unifdefコマンドとその拡張とかはあるみたい。

[/追記]