我在一个类的头文件中声明一个 NSString* 数组。
多边形形状.h
NSString* POLYGON_NAMES[] = {@"Invalid Polygon", @"Monogon", ...};
现在我在 PolyginShape.m 中使用它,如下所示:
- (NSString*) name {
return (POLYGON_NAMES [self.numberOfSides]);
}
numberOfSides 是一个 iVar,它将指示存储多边形名称的索引
到目前为止一切都很好......它正在编译没有任何错误
然后我在实现 main 方法的文件中添加了 PolygonShape.h(注意:这些没有任何类定义和调用函数 C-Style 而不是 obj-c Style)
#import "PolygonShape.h"
现在当我编译时,我得到一个构建(链接)错误
ld: duplicate symbol _POLYGON_NAMES in /Users/../Projects/CS193P/1B/What_A_Tool/build/What_A_Tool.build/Debug/What_A_Tool.build/Objects-normal/i386/PolygonShape.o and /Users/../Projects/CS193P/1B/What_A_Tool/build/What_A_Tool.build/Debug/What_A_Tool.build/Objects-normal/i386/What_A_Tool.o
collect2: ld returned 1 exit status
所以我通过堆栈溢出和其他论坛,大多数建议是制作全局变量 extern,所以我做了......
extern NSString* POLYGON_NAMES[] = {@"Invalid Polygon", @"Monogon" .. };
但是,我仍然收到链接错误,并且现在还收到 2 个警告
warning: 'POLYGON_NAMES' initialized and declared 'extern'
在我导入 PolygonShape.h 的两个地方
我在这里想念什么?
谢谢。