关键字:static和extern(在C和C++中)
2017-10-31 18:44
274 查看
static
在C语言中:
在C++中:
![](https://img-blog.csdn.net/20171031173252846?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFuZ3poYW5namluZzk3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20171031175000177?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFuZ3poYW5namluZzk3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
extern
extern被称为是最会戴帽子的关键字
extern,是外面的、外来的意思。
在C语言中:
在C++中:
C和C++函数在链接时,给函数换名字的命名规则
C函数:
C函数名在链接时,会在函数名前加一个下划线。
例如:int Add(int left,int right);
链接的时候会把Add变成_Add;
C++函数
C++函数名在链接时,会把函数名变为一串“有规则”的符号。
例如:int Add(int left,int right);
链接的时候会把Add变成 ?Add@@YAHHH@z
由此也可知:C语言不支持函数重载,C++语言支持函数重载,C不支持函数重载,因为C程序在链接的时候会把程序中出现的所有Add都改为_Add.编译器就会不知道该调用那个。
【函数重载的条件:同一个作用域,函数名相同,参数列表不同(参数列表不同可表现为:个数方面、类型方面、次序方面)】
在C语言中:
1.修饰变量; (1)全局变量: 改变了连接属性,把外部链接属性改为了内部链接属性。即改变了变量的作用域,这个全局变量只能在本文件中访问,不能在其他文件中访问,即便是extern外部声明也不可以。 (2)局部变量: 改变局部变量的生命周期,使局部变量具有了记忆功能,只执行一次,直到程序运行结束以后才会释放。 2.修饰函数。 改变了链接属性,把外部链接属性改为了内部链接属性。则这个函数只能在本文件中使用,不能被其他文件调用。
在C++中:
1.修饰变量: (1)普通成员变量: (2)静态成员变量: 2.修饰函数: (1)普通成员函数 (2)静态成员函数
extern
extern被称为是最会戴帽子的关键字
extern,是外面的、外来的意思。
在C语言中:
extern可以置于变量或函数前,以表明变量或函数的定义在别的文件中, 下面代码用到的这些变量或函数是外来的,不是本文件定义的,提示链接器遇到此变量和函数在其他模块中解析/绑定此标识符。
在C++中:
用于指示C或C++函数的调用规范。 例如:在C++中调用C库函数,就需要在C++程序中用 extern"C" 声明要引用的函数,这是给链接器用的,告诉链接器在链接的时候用C函数规范来链接。 主要原因是:C和C++程序编译完成后在目标代码中命名规则不同,用此来解决名字匹配的问题。
C和C++函数在链接时,给函数换名字的命名规则
C函数:
C函数名在链接时,会在函数名前加一个下划线。
例如:int Add(int left,int right);
链接的时候会把Add变成_Add;
C++函数
C++函数名在链接时,会把函数名变为一串“有规则”的符号。
例如:int Add(int left,int right);
链接的时候会把Add变成 ?Add@@YAHHH@z
由此也可知:C语言不支持函数重载,C++语言支持函数重载,C不支持函数重载,因为C程序在链接的时候会把程序中出现的所有Add都改为_Add.编译器就会不知道该调用那个。
【函数重载的条件:同一个作用域,函数名相同,参数列表不同(参数列表不同可表现为:个数方面、类型方面、次序方面)】
相关文章推荐
- 对C/C++中的static与extern关键字的使用
- C++中extern “C”含义深层探索及extern、static关键字浅析
- c/c++中static关键字和extern关键字
- C/C++ extern与static关键字
- C/C++中的extern关键字及其与static和const的关系
- 浅谈C/C++中的static和extern关键字
- 【转载】浅谈C/C++中的static和extern关键字
- 【VS开发】浅谈C/C++中的static和extern关键字
- [C++]浅谈C/C++中的static和extern关键字
- C/C++中extern,static,const 关键字详解
- C/C++关键字中的extern 和 static
- 浅谈C/C++中的static和extern关键字 转
- C\C++备忘录之关键字【static,const,extern】
- C/C++中涉及存储方式的关键字:auto,static,register,extern
- C/C++中auto、static、register、extern关键字区别小结
- 浅谈C/C++中的static和extern关键字
- C/C++中extern,static关键字详解
- 浅谈C/C++中的static和extern关键字
- 转载 浅谈C/C++中的static和extern关键字
- C/C++ extern, static, const, volatile, auto关键字