Я часто сталкиваюсь с файлами заголовков 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"
в приведенном выше примере бессмысленным с точки зрения результирующей совместимости?