4

有时我喜欢浏览 Apple 源代码,看看专业人士是如何做到的,有时我会学习一两件事。我现在正在查看 的头文件NSManagedObjectContext.h,以及它们的全局变量,例如NSManagedObjectContextDidSaveNotification,它们声明它是这样的:

COREDATA_EXTERN NSString * const NSManagedObjectContextDidSaveNotification;

而通常它只是:

extern NSString * const NSManagedObjectContextDidSaveNotification

Cmd+点击 COREDATA_EXTERN 将我带到它的定义:

#define COREDATA_EXTERN     extern

所以COREDATA_EXTERN等于extern,所以我的问题是,为什么他们不只是使用extern

4

1 回答 1

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 平台上编译核心数据......

于 2012-11-25T00:02:46.390 回答