什么时候用到Static,extern?

时间:2022-02-23 16:05:05
什么时候用到Static?
什么时候用到extern?

大虾,可不可通俗一点,谢.


6 个解决方案

#1


在C++中,当一个变量你在别处定义了,想在另外一处声明时可能用extern.以免编译器认为重复定义变量.


至于什么时候用到Static,请看这篇文章,讲得很详细.http://community.csdn.net/Expert/topic/4686/4686455.xml?temp=.4744837

#2


1,在此文件中声明别的文件的变量时用extern
2,在cpp程序文件中用到c的库函数时用extern
3,声明静态变量时用static
4,声明全局变量时可用static
5,static型的变量是存储在静态存储的,他的值在程序运行时只初始化一次

#3


想要引用其它文件中定义的标识符,用extern

static的用法主要有三种:
1、函数内,作用域只在函数内,但是生存期却贯穿整个程序运行期间;
2、函数外(或者直接修饰函数),只能作用于本文件的标识符,链接时没有歧义;
3、修饰类成员,该成员与对象实例无关,就算没有对象实例,该成员也是有效的。

#4


引用:gjianpro(#ifndef DEBUG) 
1,在此文件中声明别的文件的变量时用extern
2,在cpp程序文件中用到c的库函数时用extern
3,声明静态变量时用static
4,声明全局变量时可用static
5,static型的变量是存储在静态存储的,他的值在程序运行时只初始化一次

#5


想要引用其它文件中定义的标识符,用extern

static的用法主要有三种:
1、函数内,作用域只在函数内,但是生存期却贯穿整个程序运行期间;
2、函数外(或者直接修饰函数),只能作用于本文件的标识符,链接时没有歧义;
3、修饰类成员,该成员与对象实例无关,就算没有对象实例,该成员也是有效的。

//=============
正解

#6


补充一下:

1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 
2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 
3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 

#1


在C++中,当一个变量你在别处定义了,想在另外一处声明时可能用extern.以免编译器认为重复定义变量.


至于什么时候用到Static,请看这篇文章,讲得很详细.http://community.csdn.net/Expert/topic/4686/4686455.xml?temp=.4744837

#2


1,在此文件中声明别的文件的变量时用extern
2,在cpp程序文件中用到c的库函数时用extern
3,声明静态变量时用static
4,声明全局变量时可用static
5,static型的变量是存储在静态存储的,他的值在程序运行时只初始化一次

#3


想要引用其它文件中定义的标识符,用extern

static的用法主要有三种:
1、函数内,作用域只在函数内,但是生存期却贯穿整个程序运行期间;
2、函数外(或者直接修饰函数),只能作用于本文件的标识符,链接时没有歧义;
3、修饰类成员,该成员与对象实例无关,就算没有对象实例,该成员也是有效的。

#4


引用:gjianpro(#ifndef DEBUG) 
1,在此文件中声明别的文件的变量时用extern
2,在cpp程序文件中用到c的库函数时用extern
3,声明静态变量时用static
4,声明全局变量时可用static
5,static型的变量是存储在静态存储的,他的值在程序运行时只初始化一次

#5


想要引用其它文件中定义的标识符,用extern

static的用法主要有三种:
1、函数内,作用域只在函数内,但是生存期却贯穿整个程序运行期间;
2、函数外(或者直接修饰函数),只能作用于本文件的标识符,链接时没有歧义;
3、修饰类成员,该成员与对象实例无关,就算没有对象实例,该成员也是有效的。

//=============
正解

#6


补充一下:

1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 
2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 
3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。