有时我喜欢浏览Apple源代码以了解专业人士是如何做到这一点的,有时我会学习一两件事。我现在正在查看NSManagedObjectContext.h
的头文件,对于他们的全局变量,比如说NSManagedObjectContextDidSaveNotification
,他们就像这样声明:
COREDATA_EXTERN NSString * const NSManagedObjectContextDidSaveNotification;
而通常它只是:
extern NSString * const NSManagedObjectContextDidSaveNotification
Cmd +点击COREDATA_EXTERN将我带到它的定义:
#define COREDATA_EXTERN extern
所以COREDATA_EXTERN
等于extern
,所以我的问题是,为什么他们不只是使用extern
?
答案 0 :(得分:3)
如果您查看CoreDataDefines.h文件,您将看到COREDATA_EXTERN的一些不同定义,例如:
#ifdef __cplusplus
#define COREDATA_EXTERN extern "C"
或:
#ifdef __cplusplus
#define COREDATA_EXTERN extern "C" _NSWINDOWS_DLL_GOOP
这允许一些特定于平台的定义,所有定义都包含在单个定义中。
Windows goop,这很有趣。我想知道的是,当你在Windows平台上编译核心数据时......