Dev*_*Dev 4 global-variables objective-c linker-errors extern
我在类的头文件中声明了一个NSString*数组.
PolygonShape.h
NSString* POLYGON_NAMES[] = {@"Invalid Polygon", @"Monogon", ...};
Run Code Online (Sandbox Code Playgroud)
现在我在PolyginShape.m中使用它如下:
- (NSString*) name {
return (POLYGON_NAMES [self.numberOfSides]);
}
Run Code Online (Sandbox Code Playgroud)
numberOfSides是一个iVar,它将指示存储多边形名称的索引
到目前为止很好......它正在编译而没有任何错误
然后我在我的文件中添加了PolygonShape.h来实现main方法(注意:这些没有任何类定义和调用函数C-Style而不是obj-c Style)
#import "PolygonShape.h"
Run Code Online (Sandbox Code Playgroud)
现在,当我编译时,我得到一个构建(链接)错误
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
Run Code Online (Sandbox Code Playgroud)
所以我通过堆栈溢出和其他论坛,大多数建议是使全局变量extern,所以我做...
extern NSString* POLYGON_NAMES[] = {@"Invalid Polygon", @"Monogon" .. };
Run Code Online (Sandbox Code Playgroud)
但是我现在仍然收到链接错误,并且现在也收到2个警告
warning: 'POLYGON_NAMES' initialized and declared 'extern'
Run Code Online (Sandbox Code Playgroud)
在我导入PolygonShape.h的两个地方
我在这里错过了什么?
谢谢.
在头文件中将数组声明为:
extern const NSString* POLYGON_NAMES[];
Run Code Online (Sandbox Code Playgroud)
在源文件中,定义数组并初始化内容:
const NSString* POLYGON_NAMES[] = {@"Invalid Polygon", @"Monogon" };
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4832 次 |
| 最近记录: |