我的Objective-C应用程序中需要一些全局变量。为此,我创建了类Globals(继承了NSObject)并在其中添加了readonly属性。我也宣布了一些常量,如下:
imports, etc.
.
.
.
#ifndef GLOBALS_H
#define GLOBALS_H
const int DIFFICULTY_CUSTOM = -1;
const int other_constants ...
#endif
.
.
.
interface, etc.
但是当我尝试编译它时,我得到链接器错误:“重复符号DIFFICULTY_CUSTOM”。如果发生这种情况,为什么会这样呢?
答案 0 :(得分:3)
问题是const int DIFFICULTY_CUSTOM = -1;
在包含标题的每个目标文件中分配了该名称的int。
您应该只在每个标题中包含声明extern const int DIFFICULTY_CUSTOM;
。然后应在一个目标文件中定义实际值const int DIFFICULTY_CUSTOM = -1;
(即.m或.c)。
在这种情况下,我只需使用#define来设置值。
答案 1 :(得分:1)
我是这样做的:
在constants.m
:
const int DIFFICULTY_CUSTOM = -1;
在constants.h
:
extern const int DIFFICULTY_CUSTOM;
并在.pch
文件中:
#import "constants.h"