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