C++/C的项目里怎么共享“全局变量”呢?

[情况]最近用OpenCV的库,写一个“轮廓”识别的程序,遇到一个关于C/C++的小问题:[问题]用visualstudio2012建一个C++的空项目,然后建一个包含m... [情况]最近用OpenCV的库,写一个“轮廓”识别的程序,遇到一个关于C/C++的小问题:
[问题]用visual studio 2012 建一个C++的空项目,然后建一个包含main()函数的cpp文件,在这个文件的main()函数的外面声明10个全局变量,然后把这个项目的其他函数都分别存放成一个单独的cpp文件,再建立一个头文件(.h),其中包含每个函数的声明,但问题出来啦:这些单独的函数都要用到那10个全局变量,但如果这些函数和main()函数不在同一个文件下则无法用这10个全局变量.......
这该怎么办呢?
-------------------------------------------------------------------------------
非常感谢!
展开
 我来答
_叶子妞妞_
2015-06-11 · TA获得超过3672个赞
知道小有建树答主
回答量:327
采纳率:83%
帮助的人:89.1万
展开全部

全局变量定义时,如果不加static修饰,那么作用域就是整个项目,可以在任何一个文件中访问或修改。

不过直接在其它文件中引用该变量时,会报未定义错误,需要在调用文件进行声明。

声明格式为:

类型 变量名;

注意声明时不能有赋值操作,否则就会被认定为是新的定义,导致重复定义错误出现。


下面是一个例子。

在a.c中,定义全局变量gvar,类型为int,初始化值为3.

int gvar = 3;

在同一个项目的b.c中,声明gvar,同时定义一个函数,使gvar自加,并打印gvar的值:

extern int gvar;//加extern声明可以使读到代码的人知道,这是一个外部文件定义的全局变量,但在C/C++中,该关键字并非强制,不加也不会出错。
void func(void)
{
    gvar ++;//gvar自加,也就是改变值的操作。
    printf("%d\n", gvar);//输出gvar,也就是引用其值的操作。
    //以上两个操作表明,在这个文件中,gvar是可被读写的。
}
百度网友9529c38
2012-12-07 · TA获得超过729个赞
知道小有建树答主
回答量:219
采纳率:57%
帮助的人:207万
展开全部
把全局变量也放在头文件中,可以用extern声明,保留原来的cpp文件的变量声明,或者把那些函数放在cpp文件中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
whoami2099
2012-12-07 · TA获得超过175个赞
知道小有建树答主
回答量:463
采纳率:100%
帮助的人:171万
展开全部
最好单独定义一个.h文件,专门放全局变量,如果那个cpp文件要使用,则包含这个头文件就可以了。而且也不会引起循环引用问题。
追问
我这么试了一下,但还是产生了循环引用问题,vs2012将所有重复引用的全局变量都报错了,是不是要给全局变量前加上一个extern呢?
追答
不用在其他头文件中包含这个独立头文件。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Zendvrgan
2012-12-11 · TA获得超过2580个赞
知道大有可为答主
回答量:9249
采纳率:0%
帮助的人:2551万
展开全部
#中
整数最大值,最小值;
无效温控功能(一,INT B);
无效的主要()
{
scanf的(“ ;第%d,%d“的,与最大和最小值);
温控功能(最大,最小);
printf的(”最大值=%d个,最小=%d“的,最大,最小); BR />}
无效温控功能(整数,INT B)
{
(A> B){最大值=分钟= B;}
其他{最大值= B;分钟=;}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iro52238
2012-12-20 · TA获得超过1.2万个赞
知道大有可为答主
回答量:3万
采纳率:0%
帮助的人:2966万
展开全部
局部变量的范围内尽量不用全局变量是上{}内定义的变量后

只有当你有使用全局变量,并没有替代的时间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式