【发布时间】:2016-02-05 05:15:39
【问题描述】:
我经常遇到包含 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" 对产生的兼容性没有意义吗?
【问题讨论】:
-
extern "C"不会“防止”名称损坏。它告诉编译器,除其他外,使用 C 风格的名称修饰。
标签: c++ c header-files extern extern-c