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使ってると触れられないところに触れられておもろい.
こちらの本が非常にくわしいです。
- 作者: ビャーネ・ストラウストラップ,Bjarne Stroustrup,柴田望洋
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/02/28
- メディア: 大型本
- この商品を含むブログ (11件) を見る