iOS中的extern与static

1.extern

#import <Foundation/Foundation.h>

extern NSString *DBDefaultName;

@interface DataBase : NSObject

@end

#import "DataBase.h"

NSString *DBDefaultName = @"default.sqlite";

@implementation DataBase

@end
extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或者函数时时,在其他模块中寻找其定义。另外,extern也可用来进行链接指定

2.static

#import "DataBase.h"
#import "FMDatabase.h" @interface DataBase () @end @implementation DataBase static FMDatabase *database; @end

3.区别:

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

  (2)static修饰的全局静态变量,作用域是声明此变量所在的文件。

上一篇:DynamicObject数据包操作


下一篇:转: Lua 语言 15 分钟快速入门