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

     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的是动态存储(存放在动态存储区)。两种形式的外部变量都是静态存储方式(存储在静态存储区),只是作用范围不同而已,都是在编译时分配内存的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值