Sus*_*nna 10 c iphone import xcode compiler-errors
当我编译我的iPhone应用程序时,xCode为MyConstants.h中的变量提供了"重复符号"错误
我想如果我用过:
#import "MyConstants.h"
Run Code Online (Sandbox Code Playgroud)
它会避免这种情况吗?
但我仍然有问题.
补充信息:
也许我应该问这个:
如果您需要在所有源代码文件的每个部分中访问常量...您将在.h文件中放入什么?您将使用什么来将该常量包含在代码的其他部分中.
我想(但我猜它不是)它很简单:
(不管我在哪里在任何代码中的任何地方重新定义thisIsGlobal.)
然后在我的其他每个源文件的顶部只添加"#import MyConstants.h".
dre*_*lax 20
您可以做的是放入标题(MyConstants.h
):
extern const int MyConstant;
extern NSString * const MyStringConstant;
Run Code Online (Sandbox Code Playgroud)
在源文件中,包含上面的标题但定义常量(MyConstants.m
):
const int MyConstant = 123;
NSString * const MyStringConstant = @"SomeString";
Run Code Online (Sandbox Code Playgroud)
然后,您只需要将标头包含在使用这些常量之一的任何其他源文件中.标题只是声明这些常量存在于某处,因此编译器不会抱怨,因为链接器的工作就是解析这些常量名称.包含常量定义的源文件被编译,链接器看到这是常量所在的位置,并解析在其他源文件中找到的所有引用.
在标头中声明和定义常量(未声明为static
)的问题是编译器将其视为包含该标头的每个文件的独立全局.当链接器尝试将所有已编译的源链接在一起时,它会像您所包含的那样多次遇到全局名称MyConstants.h
.
两种选择:
static const int thisIsGlobal = 123;
Run Code Online (Sandbox Code Playgroud)
要么
#define thisIsGlobal 123
Run Code Online (Sandbox Code Playgroud)
我像这样使用,并且工作:(在@interface之外的.h中)
static NSString * const mkLocaleIdentifierUS = @"en_US";
static NSString * const mkLocaleUserSystemSettings = nil;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6393 次 |
最近记录: |