您的位置:首页 > 移动开发 > Objective-C

Objective-C中的常量定义方法、C中static 对全局变量extern的限制

2014-04-13 00:16 281 查看
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的是动态存储(存放在动态存储区)。两种形式的外部变量都是静态存储方式(存储在静态存储区),只是作用范围不同而已,都是在编译时分配内存的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: