如果一个函数在多个源文件 main函数内都需要使用该怎么办

A,外部变量&&
extern是一个关键字,它告诉编译器存在着一个变量或者一个函数,如果在当前编译语句的前面中没有找到相应的变量或者函数,也会在当前文件的后面或者其它文件中定义,来看下面的例子。
[cpp] view
// extern.cpp : Defines the entry point for the console application.
#include &stdafx.h&
#include &iostream&
argc, _TCHAR* argv[])
//typedef wchar_t
_TCHAR;#define _tmain
cout && &i = &
上面代码中变量i和函数func在文件末尾定义,所以变量需要使用extern关键字告诉编译器,变量在别的地方定义。extern int
i我原来以为extern i就可以,结果编译器报错,仔细想下确实应该,否则编译器不知道i是什么类型的数据,又怎么能判断i =
0是否是一个正确的赋值语句呢?
那么定义在其他文件中的函数和变量,如何通过extern关键字调用呢?
首先,定义在其它文件中的函数和变量,可以使用两种方法调用:
一、使用头文件调用,这时候,函数和变量必须在头文件中定义和声明。
二、使用extern关键字调用,这时候函数和变量在.cpp或者.c文件中定义和声明。
看下面两个例子:
devVar.cpp函数中定义:
[cpp] view
#include &stdafx.h&
extern.cpp中
[cpp] view
// extern.cpp : Defines the entry point for the console application.
#include &stdafx.h&
#include &iostream&
argc, _TCHAR* argv[])
//typedef wchar_t
_TCHAR;#define _tmain
cout && &i = &
编译工程,程序输出:i =
1,这里使用extern关键字声明在其它cpp文件中定义的变量和函数。
#include &filensme& ---
将filename文件中的内容插入到新的文件中。
deVar.h文件中代码为
[cpp] view
#include &stdio.h&
printf(&%d&
函数func修改全局变量i的值并输出。
extern.cpp文件内容为:
[cpp] view
#include &stdafx.h&
#include &stdio.h&
#include &iostream&
#include &devVar.h&
//extern void func();
x = 0;x & 10; x++)
程序输出1,2,3,4,5,6,7,8,9,10,这里#include
&filname.h& 包含定义在其它头文件中的函数和变量,在来看一个例子。
[cpp] view
// extern.cpp : Defines the entry point for the console application.
#include &stdafx.h&
#include &iostream&
//这里extern必需的,函数定义在其它cpp文件中
[cpp] view
argc, _TCHAR* argv[])
//typedef wchar_t
_TCHAR;#define _tmain
devVar.cpp文件中内容为:
[cpp] view
#include &stdafx.h&
#include &iostream&
cout && &i = &
这样,同样是输出了i= 100。
能够使用extern引用其它cpp文件中定义的函数说明了一个问题:
如果一个工程现编译cpp文件,在把多个目标文件链接成为可执行文件,而两个或多个文件中,定义了相同的全局变量,那么,程序编译的时候不会报错,因为编译器单独编译每个文件,在链接可执行文件的时候,由于多个目标文件中含有相同的全局变量,而生成可执行文件的时候,任何文件中定义的全局变量对其它目标文件都是可见的,此时由于变量定义冲突而发生错误。看下面的代码:
[cpp] view
// extern.cpp : Defines the entry point for the console application.
#include &stdafx.h&
#include &iostream&
//这里extern是必须的函数定义在别的cpp文件中
argc, _TCHAR* argv[])
//typedef wchar_t
_TCHAR;#define _tmain
devVar.cpp文件中,内容为:
[cpp] view
#include &stdafx.h&
#include &iostream&
cout && &i = &
单独compile任何一个cpp文件都是对的,但是 编译工程,生成可执行文件的时候报错:
D:\vctest\extern\Debug\extern.exe not found or not built by the last
performing full link 1&devVar.obj : error
LNK2005: &int i& (?i@@3HA) already defined in
extern.obj 1&D:\vctest\extern\Debug\extern.exe : fatal error
LNK1169: one or more multiply defined symbols found
原因是:两个.cpp文件中都定义了全局变量i,变量重复定义了。
PS:定义在.h文件中的函数和变量不能使用extern变量声明,原因是#include
&filename&在预编译的时候将.h文件中的内容插入了cpp文件中,因此编译器找得到在其它.h文件中定义的变量或者函数。编译的时候,只编译cpp文件的内容,.h文件时不参与编译,如果使用extern声明在.h文件中定义的变量或者函数,那么声明为extern的变量和函数在其它.cpp文件中找不到,因此程序编译的时候就发生了错误。
原文来自:http://blog.csdn.net/sruru/article/details/7951019
D,对全局变量使用static定义后,只能在自己的源文件中使用
A,外部变量,可供所以源文件使用
B,寄存器变量,放在寄存器而非内存中,效率更高,一般是临时变量
C,自动变量,所有未加 static 关键字的都默认是 auto 变量,也就是我们普通的变量
D,静态变量,在内存中只存在一个,可供当前源文件的所有函数使用
从作用域角度分,可分为局部变量和全局变量。
局部变量:(1)自动变量auto,离开函数后,储存空间立即释放。
(2)静态局部变量static,离开函数后,储存空间仍保存。
(3)寄存器变量register。效率更高,读取速度远大于内存
全局变量:(1)静态外部变量static,只限制于本文件中使用
(2)外部变量extern,可扩展全局变量作用域。
D.静态变量,
D static声明的变量只能供该源文件内所有函数使用
用在全局变量上 表示只允许本文件使用
若如初见 已经回答的很仔细了,我再添一丢丢吧,那就是在定义全局变量的时候如果不声明关键字,例如直接int
a,那这个变量也是可以在所有源文件中使用的.
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
京ICP备号-4
扫一扫,把题目装进口袋如果在用户的程序中要使用c库函数中的数学函数时,应在该源文件中使用include命令是什么?-
如果在用户的程序中要使用c库函数中的数学函数时,应在该源文件中使用include命令是什么?
来源:www.zuowenzhai.com &&&作者:编辑&&&日期:
<img alt="受小游戏影响,用户沉浸在小程序的时间明显增长." src="http://mmbiz.qpic.cn/mmbiz_jpg/fmDSURdGrOWf85cNO8Md3Uy9icKwNvWZOgpK7ZxR4FOJ3lDM66tCZeKibSV30rZe0ABNAtfOast2bAQA834CGKsg/640?wx_fmt=jpeg" />
<img alt="西安学区房租售小程序可以让您直接接触用户" src="http://drbd01.oss-cn-shanghai.aliyuncs.com/.jpeg" />
<img alt="用户们在打开文件的时候,系统突然弹出&该文件没有与之关联的程序来执" src="http://www.xitongzhijia.net/uploads/allimg/-1PH31J419-51-water.jpg" />
<img alt="微信小程序年中报告:用户超6亿,电商流量暴增,小游戏后劲不足" src="http://image_news.bubuko.com/news/37781.jpg" />
如果用户的程序中要使用C库函数中的字符串函数时,应在该源文件中使用的include命令是什么?:
如果在用户的程序中要使用c库函数中的字符串函数时,应在该源文件中使用的include命令是(
如果在用户的程序中要使用c库函数中的字符串函数时,应在该源文件中使用的include命令是( ) 如...
在使用C语言库函数时,要用预编译命令“#include”将有关的头文件包括到用户源文件中:
正确 最好是包含进去 如果不包含你要调用的库函数 容易报错
C语言中对于prinf,scanf两个函数头文件的包含命令#include&stdio.h&其中?:
是的。printf,scanf两个函数都包含在库文件&stdio.h&中。 printf()函数是格...
include是什么意思,在C语言中又是什么意思:
#include &stdio.h& #include &math.h& main() { doub...
当在源程序中使用到库函数printf时,先要用include命令将( )头文件包含进来。:
当在源程序中使用到库函数printf时,先要用include命令将( )头文件包含进来。 库函数的定...
#include命令可以包括有函数定义的C语言源程序文件对吗:
#include命令可以包括任何符合标准的文本格式文件,包括.c/.cpp等格式。 但在实际编译链接...
2、 调用字符串函数时,在#include命令行中应包含_____。:
你可以打开一个程序然后去你所按的路径下找到include这个文件这里面都是头文件时面都是一些头 A ...
C语言的include是什么作用?直接把include后面的文件内容拷贝进来吗?如果是直接拷贝进来,...:
预处理命令还有其它几种,这里的include 称为文件包含命令,其意义是把尖括号&&或引号&&内指定...
c语言编程max函数不可以从函数库中调用吗 我的想法是头文件加上#include&math.h&初学...:
C里面没有max函数,一般是自己写个宏定义或者函数来实现。
(编辑:qq网友)
C语言程序: #include &stdio.h&#include &string.h&#defin...
解答:因为打印机是一种临界资源,所以这三个进程只能互斥使用这台打印机,即一个用户的计算结果打印完之后...
#include &stdio.h& int main(void) { int i, int ...
注释就是写什么东西都无所谓,反正编译器不会看到这些东西。所以编译前编译器会将注释的内容剔除掉,只将其...
#include&stdio.h&#include&stdlib.h&#include&time.h...
char input[233];scanf(&%s&, input);if(strcmp(input...
#include&stdio.h& int main() { int a=1,b,c; char o...
#include &stdio.h& void main() { float a,b,c; char...
用文件操作就好,把你要写进去的文件先打开,然后用write函数写,或者使用fprintf就可以把你要...
程序运行过程中,各变量值如下表所示:S n i是否继续循环 循环前0 2 1/第一圈12 4 2 是...
&|&&|&&|&&|&&|&nbsp&|&在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别_百度知道
在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别
在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别为
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
静态变量 static
采纳率:100%
静态变量static
为您推荐:
其他类似问题
全局变量的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。VLOOKUP函数将一个excel表格的数据匹配到另一个表中
互联网 & 发布时间: 10:57:06 & 作者:佚名 &
下面小编为大家介绍VLOOKUP函数将一个excel表格的数据匹配到另一个表中方法,教程不是很难,很实用,推荐到脚本之家,有需要的朋友可以跟着教程来学习,希望能对大家有所帮助
将一个excel表中的数据匹配到另一个表中,需要用到VLOOKUP函数。简单介绍一下VLOOKUP函数,VLOOKUP函数是Excel中的一个纵向查找函数,VLOOKUP是按列查找,最终返回该列所需查询列序所对应的值。
Excel 2013
VLOOKUP函数
软件名称:office数据自动比对提取(excel数据处理工具)
绿色版软件大小:2.09MB更新时间:
1、我们一个excel表,需要在另一个表中找出相应同学的班级信息。
2、把光标放在要展示数据的单元格中,如下图。
3、在单元格中输入&=vl&会自动提示出VLOOKUP函数,双击蓝色的函数部分。
4、单元格中出来VLOOKUP函数。
5、选择第一列中需要匹配数据的单元格,选中一个就可以,然后输入英文状态下的逗号&,&。
6、返回到第二张表【百度经验-表2】,选中全部数据。
7、因为我们要返回的是【百度经验-表2】中第四列的班级信息,所以在公式中再输入&4,&(逗号是英文的)。(ps:提示信息让我们选择&TRUE&或&FALSE&,不用选,直接按回车键就可以)
8、按回车键之后,展示数据,效果如下图。
9、要把一列中的数据都匹配出来,只需要按下图操作。
10、完成操作,最终效果如下。
输入的符号需要是英文状态下的,如:逗号。
所匹配的数据需要和当前数据不在同一个excel表,不然会匹配错误。
以上就是VLOOKUP函数将一个excel表格的数据匹配到另一个表中方法介绍,希望能对大家有所帮助!
大家感兴趣的内容
12345678910
最近更新的内容拒绝访问 | www.excelpx.com | 百度云加速
请打开cookies.
此网站 (www.excelpx.com) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(43f610b530b03a76-ua98).
重新安装浏览器,或使用别的浏览器}

我要回帖

更多关于 3个函数放在3个源文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信