ios – 为什么Apple使用特殊的COREDATA_EXTERN限定符而不仅仅是extern?

前端之家收集整理的这篇文章主要介绍了ios – 为什么Apple使用特殊的COREDATA_EXTERN限定符而不仅仅是extern?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有时我喜欢浏览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平台上编译核心数据….

猜你在找的cocoa相关文章