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

必须写extern吗?

有两个类都需要使用共同的变量,将这些变量定义为全局变量。比如,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; // æŽ§åˆ¶çŽ¯å½¢ç¼“冲区中的使用区(指生产者已填充数据,但消费者没有读取的区域)
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-15
对,必须用extern声明,因为要涉及多个文件,不用extern的话会导致编译链接出现问题。不过不建议用全局变量,面向对象要求低耦合本回答被提问者采纳
第2个回答  2011-11-23
extern是声明
只有涉及多个文件的全局变量才需要使用extern
比如,当文件a,b都需要访问一个全局变量val时,就要在文件a,b中声明如下
extern int val;

如果只是在同一文件中使用这个全局变量就不需要extern了。
第3个回答  2011-11-19
如果要是你只编写一个C文件的话,全局变量在main 函数和其他定义的函数之外定义就行啦;
但如果涉及到两个或者两个以上的C文件,定义全局变量要用到extern
第4个回答  2011-11-17
要是在一个文件当中,可以不用,要是在不同的文件当中,那就必须用

如何在C++中设置全局变量?
1、首先,定义一个实现加法运算自定义函数。2、接着,定义一个实现乘法运算的自定义函数。3、最后,在主函数中实现程序的运算。4、定义在函数外部没有被花括号括起来的变量称为全局变量,全局变量的作用域从变量定义的位置开始一直到文件结束。5、如果在一个程序中多个函数都要对同一个变量进行处理,可...

C++如何声明全局变量?
有两个类都需要使用共同的变量,将这些变量定义为全局变量。比如,res.h和res.cpp分别来声明和定义全局变量,类ProducerThread和ConsumerThread来使用全局变量。 1 2 3 4 5 6 7 8 \/***res.h声明全局变量***\/ #pragma once #include <QSemaphore> const int g_nDataSize = 1000; \/\/ 生产者生产的总数...

vc中如何定义全局变量
在Visual C++(VC)中定义全局变量,可以将其放置在任意文件中,但需确保不在函数内部定义。这样做允许在程序的不同部分访问和使用该变量。为了在其他文件中访问全局变量,可以在定义变量的文件中使用`extern`关键字进行声明,表示这个变量在其他位置定义。或者,在App类中声明一个公有成员变量,确保所有类都...

C\/C++怎么在某个函数中声明或定义全局变量?全局变量有没有这样使用的...
全局变量的定义只能在函数外部,不能在函数内部。当要使用其他文件里的定义的全局变量时,可以用关键字extern,格式是 [extern 类型 变量名;]希望对你有帮助。

C\/C++中定义全局变量的几种方法及区别
全局变量只有一种定义方法,就是在.cpp中 Type obj=InitValue; 其中有几种变化:1、内置类型如果没有InitValue那么会初始化为0。 2、类类型 InitValue可以是构造函数调用,也可以是能够隐式转换为Type类型的值。3、默认情况下,obj是外部链接的,这也是为什么要在.cpp中定义,而不要在.h中定义的...

c++全局变量extern
extern在C++中用作声明变量或函数在其他文件中被定义,帮助编译器在链接时查找定义。在不同文件共享变量和函数定义时,extern确保了代码的可移植性。例如,若文件a.cpp和b.cpp都需要使用全局变量g_var,可在a.cpp中定义g_var,并在b.cpp中使用extern声明g_var,实现文件间变量共享。同样,extern用于...

如何用C++将vector数组定义成全局变量
一个分配器被vector所使用,标准库只有一些分配器的基本界面,要写自己的分配器,就几乎全都要自己实现如果用的是MinGW,可以这样写:include <array>#include <vector>#include <ext\/array_allocator.h>int *packaged_pointer;namespace gxx = __gnu_cxx;typedef gxx::array_allocator<int,std::...

C++Builder全局变量是怎么定义的
定义是告诉编译器要为变量分配存储空间。你在头文件中写入:AnsiString Str_Application;其实不是声明变量,而是定义变量,这就意味着包含这个头文件的地方都会为变量分配空间,所以会有很多值。正确的方法是在头文件中使用extern进行声明,而在cpp中定义一次。还有一个方法就是在头文件中使用static 定义。

VC+++ 全局变量的定义
下面是对C++作用域的几个总结:按照作用域来分,有两种变量:全局变量和局部变量,全局变量是在所有函数体外部声明的,局部变量则是局限于一个函数,局部变量也叫自动变量,即auto修饰符,但这个修饰符是自动的,所以不用写;局部变量还可以有一个修饰符register,叫寄存器变量,注意,这个修饰符只是针对...

c++如何定义全局变量
int main(){ void shuru();void shuchu();extern a;shuru();shuchu();return 0;} int a;void shuru(){ cin>>a;} void shuchu(){ cout<

相似回答