您的位置:首页
static,const,extern,以及全局常量
2016-07-28 22:57
363 查看
1:全局常量的定义:1:创建Header头文件,再创建与Header头文件类名相同的空文件作为.m文件,.h文件引用文件,.m文件负责定义常量
补充:1:若无法识别CGFloat结构体,则引入头文件,
#import <UIKit/UIKit.h>
2:.m文件中定义的常量,用const修饰代表常量。其中const CGFloat a = 10.f; 和 CGFloat const a = 10.f;两种写法是一样的,都代表a值为常量,不可修改,但是外部可通过extern CGFloat a;引用该变量,若无const,则通过extern引用a后也可修改。全局变量若只想被该文件所持有,不希望被外界引用,则用static修饰,也就是static const CGFloat a = 10.f;和 static CGFloat const a = 10.f;是一样的,注意只有全局变量用static修饰时,才只被该文件所持有,外界不可引用。
const CGFloat XMGRed = 0.4;定义一个常量,若是全局变量,则可被外界引用,但不能修改
3:定义不可变字符串时:用 static NSString * const name = @"JACK";则指针name不可变,外界不可以给该变量赋值。其中const修饰可变与不可变,就看const右边修饰的是什么 例如:NSString * const name = @"JACK",则代表指针name不可变,*name可变,若NSString const * name = @"JACK",则 *name不可变,指针name可变
4:UIKIT_EXTERN:其实就是extern,最好加上const,来告诉外界这个引用变量不可改变。
UIKIT_EXTERN const CGFloat XMGRed;
5:宏定义 与 static const 修饰的全局常量的区别:一般项目中尽量避免使用大量的宏定义,因为每一个宏定义都会在内存中临时开辟一份内存空间,而static const 修饰的常量 ,则只会开启一份内存空间,其使用效果和宏定义相同,建议以后项目开发中定义常量时,多用 static const 来代替宏定义
#import <UIKit/UIKit.h> UIKIT_EXTERN const CGFloat XMGRed; UIKIT_EXTERN const CGFloat XMGGreen; UIKIT_EXTERN const CGFloat XMGBlue; UIKIT_EXTERN const CGFloat XMGAlpha; UIKIT_EXTERN const int XMGAge; UIKIT_EXTERN NSString * const XMGName;
#import <UIKit/UIKit.h> const CGFloat XMGRed = 0.4; const CGFloat XMGGreen = 0.6; const CGFloat XMGBlue = 0.7; const CGFloat XMGAlpha = 1.0; const int XMGAge = 20; NSString * const XMGName = @"jack";
补充:1:若无法识别CGFloat结构体,则引入头文件,
#import <UIKit/UIKit.h>
2:.m文件中定义的常量,用const修饰代表常量。其中const CGFloat a = 10.f; 和 CGFloat const a = 10.f;两种写法是一样的,都代表a值为常量,不可修改,但是外部可通过extern CGFloat a;引用该变量,若无const,则通过extern引用a后也可修改。全局变量若只想被该文件所持有,不希望被外界引用,则用static修饰,也就是static const CGFloat a = 10.f;和 static CGFloat const a = 10.f;是一样的,注意只有全局变量用static修饰时,才只被该文件所持有,外界不可引用。
const CGFloat XMGRed = 0.4;定义一个常量,若是全局变量,则可被外界引用,但不能修改
3:定义不可变字符串时:用 static NSString * const name = @"JACK";则指针name不可变,外界不可以给该变量赋值。其中const修饰可变与不可变,就看const右边修饰的是什么 例如:NSString * const name = @"JACK",则代表指针name不可变,*name可变,若NSString const * name = @"JACK",则 *name不可变,指针name可变
4:UIKIT_EXTERN:其实就是extern,最好加上const,来告诉外界这个引用变量不可改变。
UIKIT_EXTERN const CGFloat XMGRed;
5:宏定义 与 static const 修饰的全局常量的区别:一般项目中尽量避免使用大量的宏定义,因为每一个宏定义都会在内存中临时开辟一份内存空间,而static const 修饰的常量 ,则只会开启一份内存空间,其使用效果和宏定义相同,建议以后项目开发中定义常量时,多用 static const 来代替宏定义
相关文章推荐
- 【LeetCode】 014. Longest Common Prefix
- List.subList()的使用以及List和ArrayList之间的转换
- LeetCode:Unique Binary Search Trees系列
- 实现BaseFragment
- 推荐算法概览
- Css3中边框的处理
- linux内核的制作
- 继承和系统对象(构造函数伪装&原型链&call方法)
- mysql56 在线源码查看
- [thinkphp5 学习笔记] model类型
- 一个小矩阵的翻转t=1为上下翻转, t=0为左右翻转
- Android中常用的对话框的创建
- 2002: [Hnoi2010]Bounce 弹飞绵羊
- 魏晓_20160728_第一次博客
- 1021 Fibonacci Again
- 利用Python抓取和解析网页(转载) HTMLParser 和 urllib
- 师生帮手(1)
- 三、java中的流程控制
- JAVA《多线程》
- 动画