iOS中定义常量的系统做法是,一般都习惯在常量名字前加小写的k,是因为常量翻译成 匈牙利语 或 德语 都是 konstans:
#import <Foundation/Foundation.h>
CA_EXTERN NSString *kNetWorkWifi;
@interface Constant : NSObject
@end
CA_EXTERN在系统中是这样定义的。
#ifndef CA_EXTERN
# define CA_EXTERN extern
#endif
然后在.m文件中赋值 声明的外部变量:
#import "Constant.h"
NSString *kNetWorkWifi = @"wifi";
@implementation Constant
@end
外部变量是在函数的外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为程序中各个函数所引用。编译时将外部变量分配到静态存储区。
有时,需要用extern来声明外部变量,以扩展外部变量的作用域。
有时在程序设计中希望某些外部变量只限于本文件引用,而不能被其他文件引用。这时可以在定义外部变量时加一个static声明。
file1.c file2.c
static int A; extern int A;
void main(){ void fun(int n){...;
} A = A*n;}
在file1.c中定义了一个全局变量A,但它用static声明,因此只能用于本文件。
这种加上static声明、只能用于本文件的外部变量成为静态外部变量。
需要指出:不要误认为对外部变量加static声明后才是静态存储方式(存储在静态存储区中),而不加static的是动态存储(存放在动态存储区)。两种形式的外部变量都是静态存储方式(存储在静态存储区),只是作用范围不同而已,都是在编译时分配内存的。