gpt4 book ai didi

objective-c - 仅 "extern const"与 "extern"

转载 作者:太空狗 更新时间:2023-10-30 03:14:51 26 4
gpt4 key购买 nike

我见过 2 种创建全局变量的方法,有什么区别,什么时候使用它们?

//.h
extern NSString * const MyConstant;

//.m
NSString * const MyConstant = @"MyConstant";

//.h
extern NSString *MyConstant;

//.m
NSString *MyConstant = @"MyConstant";

最佳答案

前者是常量的理想选择,因为它指向的字符串无法更改:

//.h
extern NSString * const MyConstant;

//.m
NSString * const MyConstant = @"MyConstant";
...
MyConstant = @"Bad Stuff"; // << YAY! compiler error

and

//.h
extern NSString *MyConstant;

//.m
NSString *MyConstant = @"MyConstant";
...
MyConstant = @"Bad Stuff"; // << NO compiler error =\

简而言之,默认使用const(前者)。如果您尝试更改它,编译器会通知您 - 然后您可以决定这是否是您的错误,或者它指向的对象是否可能会更改。这是一个很好的保护措施,可以避免很多错误/麻烦。

另一个变体是一个值:

extern int MyInteger; // << value may be changed anytime
extern const int MyInteger; // << a proper constant

关于objective-c - 仅 "extern const"与 "extern",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7296197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com