私はよく、extern "C"
ガード、
を含むCヘッダファイルを見つけましたが、実際の機能は含まれていません。たとえば:メソッドなしのヘッダーにextern "C"を使用する理由はありますか?
/* b_ptrdiff.h - base type ptrdiff_t definition header */
#ifndef __INCb_ptrdiff_th
#define __INCb_ptrdiff_th
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _PTRDIFF_T
#define _PTRDIFF_T
typedef long ptrdiff_t;
#endif /* _PTRDIFF_T */
#ifdef __cplusplus
}
#endif
#endif /* __INCb_ptrdiff_th */
私はextern "C"
は機能に名前マングリングを防止することを知っているが、それはまた、変数と型宣言の他のインターフェースの問題に対して防ぐのですか?
上記の例のextern "C"
を使用すると、互換性の面で意味がありませんか?
'extern" C "'は名前のマングリングを「防止」しません。これはコンパイラに、とりわけ、Cスタイルの名前マングリングを使用するよう指示します。 –