包含.h文件时clang复制符号

时间:2012-11-10 04:38:35

标签: objective-c ios c header-files

  

可能重复:
  obj-c duplicate symbol for header variable

我的项目中有多个.m和.mm文件。我可以在我喜欢的.m文件中包含这个.h文件(该文件具有相应的.m或.mm文件)但是当我将它包含在多个.mm文件中时,我得到重复符号链接器错误。< / p>

同样在.h文件中,我用预处理器命令包围了内容(在obj-c中这些是否被尊重?)这里的内容大概是这样的:

#ifndef _CONFIG_H_
#define _CONGIF_H_

CGFloat WIDTH, HEIGHT;
// other similar code...

#endif

我在WIDTH和HEIGHT

上得到重复的符号错误

1 个答案:

答案 0 :(得分:7)

你应该添加

extern
在标题中使用CGFloat声明之前的

关键字,并在.m文件中定义不带extern的变量,以避免在多个位置定义变量。

在标题中:

extern CGFloat WIDTH, HEIGHT;

在.m文件中(其中一个,任何一个)

CGFloat WIDTH, HEIGHT;