好的,这与问题"Constants in Objective 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;
我的问题: Constants.h 中的enum
是typedef
可以吗?代码正在编译好(到目前为止没有警告或错误),但我想知道这是否是正确的方法,因为相关问题中提供的解决方案涉及拆分常量的定义和声明。
感谢。
答案 0 :(得分:3)
嗯,常量和枚举用于不同的目的(尽管有一些明显的重叠)。所以,除非你有充分的理由违反这条规则,否则不要偏离人们的期望。
个人而言,我不太喜欢“全局常量标题”,因为您通常应该将这些声明与它们的用法相关联。例如,Apple的框架通常在与它们相关的接口附近声明枚举,并且通知在与该类相同的标题中命名。除此之外,你已经正确宣布了事情。
如果您使用c ++或objc ++,那么您需要修复extern
,因为名称可能不同,这可能会导致链接错误。
这样的事情应该可以解决问题:
#if defined(__cplusplus)
#define MONExternC extern "C"
#else
#define MONExternC extern
#endif
然后你会像这样声明BOOKS
:
MONExternC int const BOOKS;
另外一个注意事项,这可能只是在您的示例中用于说明:这些标识符非常短,并且很容易导致与其他标识符的冲突。