static extern volatile

static:

作用:1、进行内部链接指定(将全局变量或者函数限定为在本文件内可用)

2、改变局部变量的生命周期(使得局部变量存储在静态区,在整个程序结束时才释放)

3、定义一个变量时,加上static前缀,定义的变量默认初始化为0;

extern:1、进行外部链接指定(使得全局变量或者函数在其他文件内也可以使用)

2、告诉编译器由extern声明的变量或者函数在其他的文件内)

3、我们知道,如果在一个文件内如果一个全局变量和一个局部变量名字相同,那么在局部变量所在的代码块内,我们优先使用局部变量,但是加上extern之后所代表的就是全局变量。

volatile:一般与const一块使用,例如:int const a=10;

因为加了const,所以编译器会将a“优化”为一个常量,而将a存储在栈上面。volatile int const a=10;加上volatile之后就是告诉编译器,不要把a优化成常量,所以在这种情况下a是可以被修改的。

时间: 2024-12-14 16:55:45

static extern volatile的相关文章

c语言修饰符总结const、static、volatile、auto、extern、register

写在前面 今天下午一个同事问「register」关键字是什么作用?噢,你说的是「register」啊,它的作用是--脑袋突然断片儿,我擦,啥意思来着,这么熟悉的陌生感.做C语言开发时间也不短了,不过好像没有用到过「register」,但作用还是知道的,一下子想不起来了,一万个草泥马飞奔过来. 其实C语言中除了register外,还包含常见的const.static.volatile.auto.extern等修饰符,现在一起再总结一下好了. register 修饰符 register,寄存器变量,

typedef Define static extern的区别

typedef Define static  extern的区别 1) #define#definePI 3.1415926 程序中的:PI*r*r 会替换为#define语句中的数字9 g 2)typedef是在编译时处理的.它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef specifier inside a function definition. extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到

多线程中对static和volatile的理解

问题来源于编码规范的一个例子 一. 关于server模式下的主存和工作内存 规则40     多线程访问同一个可变变量,需增加同步机制 说明:根据Java Language Specification中对Java内存模型的定义, JVM中存在一个主内存(Java Heap Memory),Java中所有变量都储存在主存中,对于所有线程都是共享的.每个线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作都是在工作内存中进行,线程之间无

[C语言 - 6] static & extern

A. extern函数 一个c文件生成一个obj文件 外部函数:允许其他文件访问.调用的函数(默认函数为外部函数),不允许存在同名的外部函数 my.c 1 //define a extern function perfectly 2 void extern testEx() 3 { 4 printf("my.c ==> call external function\n"); 5 } 6 main.c 1 //declare the function first to apply

static extern const

static 1.局部变量 // 该变量生命周期不仅仅是进入该函数后,而是整个程序运行期间 void foo() { static int nVar = 0; printf("var = %d\n", ++nVar); } 2.保护本地变量 static int g_nVar; // g_nVar只能在本文件中使用,其他文件不能通过extern访问该变量 3.静态成员变量 // 该变量不属于对象,而属于这个类 class Foo { public: static int nCount;

iOS之const,static,extern简介

const,static,extern简介 一.const与宏的区别: • const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. ? 编译时刻:宏是预编译(编译之前处理),const是编译阶段. ? 编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误. ? 宏的好处:宏能定义一些函数,方法. const不能. ? 宏的坏处:使用大量宏,容易造成编译时间久,每次都需要重新替换. • 注意:很多Blog都说使用宏,

extern、static、volatile 关键字

extern extern的两个作用: 修饰变量或函数,提示编译器此变量或函数是在其它文件中定义的,但要在此处引用: 进行链接指定,如: extern "C" void fun(int a, int b);  告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,: static static的主要作用: static局部变量,静态变量,函数返回时不会销毁: static全局变量,仅在当前文件可见: static函数,仅在当前文件可见: 修饰类成员,静态成员为

const static extern inline volatile explicit

static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: (2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问: (3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内: (4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝: (5)在类中的static成员函数属于整个

static inline volatile的作用

1.static (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话,我举例来说明.我们要同时编译两个源文件,一个是a.c,另一个是main.c. 下面是a.c的内容 [cpp] view plaincopy char a = 'A'; // global variable void msg() { printf("Hello/n"); } 下面是main.c的内容 [cpp] view p