iOS extern与static的区别

extern

#import 

extern NSString *DBDefaultName;

@interface DataBase : NSObject

@end


#import "DataBase.h"

NSString *DBDefaultName = @"default.sqlite";

@implementation DataBase

@end

extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或者函数时,在其他模块中寻找其定义,extern是声明,只是不是定义,用extern表示在程序中一定有个地方定义了该变量。另外,extern也可用来进行链接指定。

static


#import "DataBase.h"
#import "FMDatabase.h"

@interface DataBase ()

@end

@implementation DataBase

static FMDatabase *database;

@end

区别:

1、 extern修饰的全局变量默认是有外部链接的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过external全局变量的声明,就可以使用全局变量。
2、 static修饰的全局静态变量,作用域是声明此变量所在的文件。

你可能感兴趣的:(iOS extern与static的区别)