知识点

static 和extern的区别

2018-07-23  本文已影响23人  十年祤茉

extern

#import "Person.h"

@implementation Person

int age = 10;

@end

在main.m文件中,不需要引入Person类的头文件

int main(int argc, char * argv[]) {
    @autoreleasepool {
        extern int age; // 只要你在全局变量前加extern,你的这个文件就可以访问这个全局变量
        NSLog(@"age1=%d",age); // age1 = 10
        
        age =  20; // 通过这种方法修改age值
         NSLog(@"age2=%d",age); // age2 = 20
    }
    return 0;
}

static

#import "Person.h"


@implementation Person

static int  grade = 10;

@end

在main.m文件中,不引入Person类的头文件

int main(int argc, char * argv[]) {
    @autoreleasepool {
        extern int grade;
        NSLog(@"grade=%d",grade);  
    }
    return 0;
}

编译器直接报错,


_grade在main中未定义 用static修饰的局部变量 没有用static修饰的局部变量
上一篇下一篇

猜你喜欢

热点阅读