美文网首页
define、extern、static、const简单笔记

define、extern、static、const简单笔记

作者: Smicro | 来源:发表于2016-05-11 14:56 被阅读71次

extern:

#import <UIKit/UIKit.h>

extern NSString *sMicro;//声明变量sMicro

@interface ViewController :UIViewController

@end

声明了变量之后,使用变量有两种方式:

#import "UIViewController.h"//引用包含声明的头文件

extern NSString *sMicro;//在要使用的地方重新声明一遍,如果之前有对该变量进行定义,那么此时他的值就是之前定义的值。


const:

#import <UIKit/UIKit.h>

const NSString *sMicro = @"Smicro";//全局常量,外部都可以访问

@interface ViewController :UIViewController

@end

question:

const NSString *sMicro;用const修饰了,这个合法,使用起来就是全局变量NSString *sMicro?后面给出答案

static const NSString *sMicro = @"Smicro";//使用static修饰,局部常量(文件内)

const NSString *sMicro =@"Smicro";//"*sMicro"不能修改,"sMicro"能修改

NSString const *sMicro1 =@"Smicro"; //"*sMicro"不能修改,"sMicro"能修改

NSString *const sMicro2 =@"Smicro";//"*sMicro"能修改,"sMicro"不能修改

前面那个问题就是变量sMicro的地址是不可变的,但是值是可变的。

归纳:

const右边不能被更改。

我们写代码的时候,一般会把定义的全局常量写在独立的文件里。

NSString *const sMicro2 =@"Smicro";//"*sMicro"能修改,"sMicro"不能修改


define:

#define Smicro @"Smicro"

使用需要引用定义它的头文件。

另外define可以带参数,这样用起来很方便,但是个人不太推荐。下面实现平方:

#define Smicro(x)  ((x)*(x))


总结:

一般推荐使用extern const的组合来代替define。

extern有声明就有定义,define需要头文件,static出现只管它后面的范围,const只管它右边的不能改变。

感谢:参照博客

相关文章

网友评论

      本文标题:define、extern、static、const简单笔记

      本文链接:https://www.haomeiwen.com/subject/rghurttx.html