使用static、 const替代宏
来源:互联网 发布:mysql 什么情况下锁表 编辑:程序博客网 时间:2024/06/05 17:55
宏
#define str @"hqq"
只是在预处理器里进行文本替换,没有类型,不做任何类型检查,编译器可以对相同的字符串进行优化。只保存一份到 .rodata 段。甚至有相同后缀的字符串也可以优化,你可以用GCC 编译测试,”Hello world” 与 “world” 两个字符串,只存储前面一个。取的时候只需要给前面和中间的地址,如果是整形、浮点型会有多份拷贝,但这些数写在指令中。占的只是代码段而已,大量用宏会导致二进制文件变大
变量
NSString *str = @"hqq";
共享一块内存空间,就算项目中N处用到,也不会分配N块内存空间,可以被修改,在编译阶段会执行类型检查
常量
static NSString * const str = @"hqq";const NSString *str = @"hqq";NSString const *str = @"hqq";NSString * const str = @"hqq";
共享一块内存空间,就算项目中N处用到,也不会分配N块内存空间,可以根据const修饰的位置设定能否修改,在编译阶段会执行类型检查
项目中,我一般会新建一个const的.h和.m类文件,然后导入到pch文件中,这样项目中的所有文件都能使用const中定义的常量了。
如:在.m文件中
NSString * const str = @"hqq";
.h文件中
extern NSString * const str;
static的作用
static修饰过的变量或常量,不能提供外界访问。
0 0
- 使用static、 const替代宏
- 尽量用static const替代预处理指令
- const static 与static const的使用
- const static 与static const的使用
- const,static,extern使用
- 使用const,static,extern
- 使用const,enum,inline template<>替代#define
- const和static的使用
- static const volatile register使用
- 正确使用 const,static,extern
- 正确使用const,static,extern
- const,static,extern的使用
- static,const,typedef的使用
- 宏、const、static、extern、用法与使用场景
- const , static , extern , 宏的简单使用与理解
- const, static, const static
- iOS-const/static/宏/extern
- const static 与static const const static
- JAVA源码学习笔记2---AbstractTableModel
- 欢迎使用CSDN-markdown编辑器
- iOS的几种传值方式
- MySQL垂直和水平切分
- AudioRecorder && AudioPlayer简单实现
- 使用static、 const替代宏
- webservice接口客户端调用
- 英文短信和聊天时常用的缩写
- js和java计算时间差,包括计算,天,时,分,秒
- 简单算法之概率计算PI
- LeetCode OJ : 1 Two Sum
- UTF8、ASC、其他编码字符串检测
- 记录日常遇到的bug君
- C++primer plus第六版课后编程练习答案5.8