Emacsで関数とかforとかの補完をする定番といえばYASnippetですが,自作関数のスニペットは自分で作らないといけないのがすこし面倒です.
そこで今日は自作含めてあらゆる関数をyasnippetで入力できるようになる神プラグイン,auto-complete-clang を紹介します.
fprintf(stderr, "i = %d, j = %d", i, j);もちろん
printf
使ってもいいんですが、これだとターミナル上でパイプライン処理したときなんかに影響を与えてしまいます。
stderr
と入力するのもめんどくさいですね、小さなことですが。#define eprintf(...) fprintf(stderr, __VA_ARGS__)このマクロの中で、
...
というのは可変長の引数を表しています。fprintf
は引数の数が可変ですからね。__VA_ARGS__
の部分にそのまま入ります。eprintf ("i = %d, j = %d", i, j);と書くと一番最初に書いたコマンドに展開されることになります。
eprintf
によるログ出力は消しましょう。eprintf
関数を以下のように定義し直します。
#define eprintf(...) do {} while(0)これで
eprintf
は何もしないコードに置き換えられます。complex c;みたいな変数宣言を含んだファイルをclangでコンパイルするとすごくwarningが出る.
_Complex double c;みたいに複素数の実虚の型まで含めて宣言してあげる必要があるらしい.
#undef complex typedef _Complex double complex;のような文章を複素数型のincludeの後に入れてあげると良い.