extern使用方法总结

1.extern用在变量声明中常常有这样一个作用,你在*.c文件中声明了一个全局的变量,这个全局的变量如果要被引用,就放在*.h中并用extern来声明。
2.如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。即下述两个函数声明没有区别:
extern int f(); 和int f();

如果定义函数的c/cpp文件在对应的头文件中声明了定义的函数,那么在其他c/cpp文件中要使用这些函数,只需要包含这个头文件即可。
如果你不想包含头文件,那么在c/cpp中声明该函数。一般来说,声明定义在本文件的函数不用“extern”,声明定义在其他文件中的函数用“extern”,这样在本文件中调用别的文件定义的函数就不用包含头文件
#include “*.h”来声明函数,声明后直接使用即可。

举个例子:

 1 //extern.cpp内容如下:
 2 
 3 // extern.cpp : Defines the entry point for the console application.
 4 #include "stdafx.h"
 5 extern void print(char *p);
 6 int main(int argc, char* argv[])
 7 {
 8 char *p="hello world!";
 9 print(p);
10 return 0;
11 }
12 //print.cpp内容如下
13 #include "stdafx.h"
14 #include "stdio.h"
15 void print(char *s)
16 {
17 printf("The string is %s\n",s);
18 }

结果程序可以正常运行,输出结果。如果把“extern”去掉,程序依然可以正常运行。
由此可见,“extern”在函数声明中可有可无,只是用来标志该函数在本文件中定义,还是在别的文件中定义。只要你函数在使用之前声明了,那么就可以不用包含头文件了。

 

2、在MFC程序中,举一个例子,如何来使用这个全局变量:

例如 WhichBtnDown设置为不同数,来标记不同文件中按钮被按下,在主对话框XXDlg.cpp文件中,声明一个全局变量:

 int WhichBtnDown=0;   //0指没有哪个按钮被按下

如果在FirstDetect.cpp文件要使用这个变量(注意,这个变量一旦改变,就变成哪个值),则在FirstDetect.cpp文件头部声明:

extern int WhichBtnDown;

而在该文件中:

void CFirstDetect::OnBnClickedFirstbtn()
{
            *****
        WhichBtnDown=1;   //说明是CFirstDetect类中按钮被按下
             *****
}

要继续在SecondDetect.cpp文件要使用这个对量,则在SecondDetect.cpp文件头部声明:

1 extern int WhichBtnDown;

而在该文件中:

void CSecondDetect::OnBnClickedSecondbtn()
{
    *******
    WhichBtnDown=2;   //说明是CSecondDetect中按钮被按下
    *******
}

 

转载于:https://www.cnblogs.com/gzy-zju-edu/articles/4178937.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值