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修飾的全局靜態變量,作用域是聲明此變量所在的文件。