extern
#import <Foundation/Foundation.h>
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修饰的全局静态变量,作用域是声明此变量所在的文件。
网友评论