よくみる extern "C" {} と __cplusplus

C++

C向けのライブラリのコードをながめていたらちょくちょく以下のようなコードをみる.

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/* Cのコードがたくさん */

#ifdef __cplusplus
}
#endif /* __cplusplus */

なんだろうと思って調べてみたら.

  • __cplusplus
    • g++でコンパイルされるとdefineされるマクロ
  • extern "C" { /* Cのコード */ }
    • ブレースでかこまれた範囲で,リンカでの識別子の扱い方がCスタイルになる

らしい."この範囲のコードはCで書かれてるから,g++でコンパイルするときはCだとおもってよろしくしてあげてね"ってことみたい.

Cで書かれたライブラリはCで使われることもC++で使われることもあるから,こういうコードでうまくその差を吸収してあげてるんだなー.

CとかC++のコードみてると,リンカとかメモリ効率とかLL使ってると触れられないところに触れられておもろい.

AquaSKK+はてなキーワード辞書を導入した

いいよいいよー,ってまわりの人が勧めてくれていたので,SKKはてなキーワード辞書を導入してみた.

あたりを参考にしまくるとOK.一回の辞書生成タスクに30秒くらいしかかかんないし,cronにしこんどけばいいな.

ひだまりすけっちさんろくご   => ひだまりスケッチ×365
まりあほりっく               => まりあ†ほりっく
いんでっくす                 => 禁書目録
もてめん                     => motemen

すばらしいですね!