C++如何声明全局变量?

必须写extern吗?... 必须写extern吗? 展开
 我来答
百度网友96ffcf7
推荐于2016-11-14 · 知道合伙人互联网行家
百度网友96ffcf7
知道合伙人互联网行家
采纳数:22721 获赞数:118724
从事多年网络方面工作,有丰富的互联网经验。

向TA提问 私信TA
展开全部

有两个类都需要使用共同的变量,将这些变量定义为全局变量。比如,res.h和res.cpp分别来声明和定义全局变量,类ProducerThread和ConsumerThread来使用全局变量。

/**********res.h声明全局变量************/  
#pragma once   
#include <QSemaphore>   
const int g_nDataSize = 1000; // 生产者生产的总数据量  
const int g_nBufferSize = 500; // 环形缓冲区的大小  
extern char g_szBuffer[]; // 环形缓冲区  
extern QSemaphore g_qsemFreeBytes; // 控制环形缓冲区的空闲区(指生产者还没填充数据的区域,或者消费者已经读取过的区域)  
extern QSemaphore g_qsemUsedBytes; // 控制环形缓冲区中的使用区(指生产者已填充数据,但消费者没有读取的区域)
yleek
推荐于2017-12-15 · TA获得超过125个赞
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:101万
展开全部
对,必须用extern声明,因为要涉及多个文件,不用extern的话会导致编译链接出现问题。不过不建议用全局变量,面向对象要求低耦合
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tangrong2
2011-11-23 · TA获得超过768个赞
知道小有建树答主
回答量:540
采纳率:100%
帮助的人:279万
展开全部
extern是声明
只有涉及多个文件的全局变量才需要使用extern
比如,当文件a,b都需要访问一个全局变量val时,就要在文件a,b中声明如下
extern int val;

如果只是在同一文件中使用这个全局变量就不需要extern了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友25882f8
2011-11-19 · 超过29用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:61.7万
展开全部
如果要是你只编写一个C文件的话,全局变量在main 函数和其他定义的函数之外定义就行啦;
但如果涉及到两个或者两个以上的C文件,定义全局变量要用到extern
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
淦海瑶s1
2011-11-17 · TA获得超过3646个赞
知道大有可为答主
回答量:3341
采纳率:100%
帮助的人:755万
展开全部
要是在一个文件当中,可以不用,要是在不同的文件当中,那就必须用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式