extern "C"
ガードを含む 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"
、結果として生じる互換性に関して無意味ですか?