C/C++关键字中的extern 和 static

32 篇文章 0 订阅

extern 关键字的用法,

示例:

在tet.cpp中声明了一个变量,而想在main的主文件中使用这个变量,就可以使用extern关键字来找到这个变量。不需要包含 .h 的方法。

项目目录:


tet.cpp

int a = 5;
static int z = 7;

void swap_b(int a, int b){
	int temp;
	temp = a;
	a = b;
	a = temp;
}
main.cpp

#include <iostream>

using namespace std;


extern int a;

//extern int z;

//static int a = 5;


int main(){

	cout << a << endl;
	
//	cout << z << endl;
	
	int a = 0, b =1;
//	swap_b(a, b);


	cout << a << " " << b << endl;

	return 0;
}







static声明的变量只会在本文件中使用,而不会在外部文件中使用:

修改以上代码

#include <iostream>

using namespace std;


extern int a;

extern int z;

//static int a = 5;


int main(){

	cout << a << endl;
	
	cout << z << endl;
	
	int a = 0, b =1;
//	swap_b(a, b);


	cout << a << " " << b << endl;

	return 0;
}
编译未通过:



函数:

函数默认为extern类型,而声明为static的函数的作用域为本文件。



extern与语言链接性:

链接程序要求每个不同的函数有不同的符号名。

C语言编译器可能将spoff这样的函数翻译为_spoff。


但在C++中,同一个名称可能对应多个函数,必须将这些函数翻译为不同的符号名称。可能将spoff(int)转换为_spoff_c,而将spoff(double,double)转换为_spoff_d_d


可以用extern指定规约:

extern "C" void spoff(int);//use C protocol for name look-up

extern "C++" void spoff(int);//use C++ protocol for name look-up

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值