【问题标题】:Why does Apple use a special COREDATA_EXTERN qualifier instead of just extern?为什么 Apple 使用特殊的 COREDATA EXTERN 限定符而不仅仅是 extern?
【发布时间】:2012-11-24 23:30:36
【问题描述】:

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

COREDATA_EXTERN NSString * const NSManagedObjectContextDidSaveNotification;

而通常只是:

extern NSString * const NSManagedObjectContextDidSaveNotification

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

#define COREDATA_EXTERN     extern

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

【问题讨论】:

    标签: ios cocoa core-data


    【解决方案1】:

    如果您查看 CoreDataDefines.h 文件,您会看到 COREDATA_EXTERN 的一些不同定义,例如:

    #ifdef __cplusplus
    #define COREDATA_EXTERN     extern "C"
    

    或:

    #ifdef __cplusplus
    #define COREDATA_EXTERN     extern "C" _NSWINDOWS_DLL_GOOP
    

    这允许一些特定于平台的定义,所有定义都包含在一个定义下。

    Windows goop,这很有趣。我想知道的是你什么时候会在 Windows 平台上编译核心数据......

    【讨论】:

    • Core Data 源于Enterprise Objects Framework,它可用于多种平台和架构。
    • 一个更新的链接将指向 Yellow-Box DBM 系统,该系统在停产时激怒了许多 Windows 开发人员。
    猜你喜欢
    • 2011-11-09
    • 2018-09-30
    • 1970-01-01
    • 2019-12-22
    • 2013-07-14
    • 2022-01-16
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    相关资源
    最近更新 更多