全局常量文件中的C typedef枚举

好的,这与问题“目标C中的常量”有关。

我创建了Constants.h及其对应的Constants.m文件:

// Constants.h
extern int const BOOKS; 
typedef enum SSDifficultyLevel {
    EASY = 0,
    MEDIUM = 1,
    HARD = 2
} SSDifficultyLevel;

// Constants.m
int const BOOKS = 66;

我的问题:是OK的enumtypedefConstants.h“d? 代码编译良好(迄今为止没有警告或错误),但我想知道这是否是正确的方法,因为相关问题中提供的解决方案涉及拆分常量的定义和声明。

谢谢。


好吧,一个常数和一个枚举服务于不同的目的(虽然有一些明显的重叠)。 所以,除非你有足够的理由来打破这个规则,否则不要太离开人们的期望。

个人而言,我不太喜欢“全局常量标题”,因为通常应该将这些声明与它们的用法相关联。 例如,Apple的框架通常在与它们相关的接口附近声明枚举,并且通知名称与类相同。

除此之外,你已经正确地声明了事情。

如果您使用c ++或objc ++,那么您将需要修复该extern因为名称可能不同,并且可能导致链接错误。

像这样的事情应该可以做到这一点:

#if defined(__cplusplus)
#define MONExternC extern "C"
#else
#define MONExternC extern
#endif

那么你会像这样宣布BOOKS

MONExternC int const BOOKS; 

另一个说明,并且这可能仅用于您的示例中的说明:这些标识符非常短,并且很容易与其他标识符发生冲突。

链接地址: http://www.djcxy.com/p/9863.html

上一篇: C typedef enum in global constants file

下一篇: Send Push Notification to many device tokens