首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"extern const“vs "extern”only

"extern const“vs "extern”only
EN

Stack Overflow用户
提问于 2011-09-04 06:19:28
回答 1查看 11.7K关注 0票数 19

我已经看到了两种创建全局变量的方法,有什么区别,你什么时候使用每种方法?

代码语言:javascript
复制
//.h
extern NSString * const MyConstant;

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

代码语言:javascript
复制
//.h
extern NSString *MyConstant;

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

回答 1

Stack Overflow用户

发布于 2011-09-04 06:24:34

前者是常量的理想选择,因为它所指向的字符串不能改变:

代码语言:javascript
复制
//.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 (前者)。如果你试图改变它,编译器会让你知道--然后你就可以决定这是不是一个错误,或者它所指向的对象是否可能改变。这是一个很好的保护措施,避免了很多bug/令人头疼。

另一种变化是针对一个值:

代码语言:javascript
复制
extern int MyInteger; // << value may be changed anytime
extern const int MyInteger; // << a proper constant
票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7296197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档