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的是动态存储(存放在动态存储区)。两种形式的外部变量都是静态存储方式(存储在静态存储区),只是作用范围不同而已,都是在编译时分配内存的。
#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的是动态存储(存放在动态存储区)。两种形式的外部变量都是静态存储方式(存储在静态存储区),只是作用范围不同而已,都是在编译时分配内存的。
相关文章推荐
- c/c++中extern、static、const的用法及全局变量/常量
- C 定义c/c++全局变量/常量几种方法的区别
- 定义C/C++全局变量/常量几种方法的区别
- C/C++定义全局变量/常量几种方法的区别
- C/C++定义全局变量/常量几种方法的区别
- C/C++定义全局变量/常量几种方法的区别
- IOS 成员变量,全局变量,局部变量定义,static与extern的区别
- 定义C/C++全局变量/常量几种方法的区别
- C/C++ 定义全局变量/常量几种方法
- 定义C/C++全局变量/常量几种方法的区别
- C/C++定义全局变量/常量几种方法的区别
- C/C++定义全局变量/常量几种方法的区别
- C/C++定义全局变量/常量几种方法的区别
- C/C++定义全局变量/常量几种方法的区别
- C/C++定义全局变量/常量几种方法的区别
- 定义C/C++全局变量/常量几种方法的…
- C/C++定义全局变量/常量几种方法的区别
- C/C++定义全局变量/常量几种方法的区别
- 定义C/C++全局变量/常量几种方法的区别
- 定义C/C++全局变量/常量几种方法的…