首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全局变量和静态全局变量的导出

全局变量和静态全局变量的导出
EN

Stack Overflow用户
提问于 2015-02-25 12:05:16
回答 1查看 5.5K关注 0票数 2

我是c++的初学者,我读过一些代码,在这些代码中,我看到全局变量一直持续到程序的末尾,静态全局变量在file.Here结束之前都有作用,这是一个示例程序,我试图在另一个文件中访问全局变量和静态全局变量。

有谁能解释一下如何在c++中使用extern作为静态全局变量?

如果我有一个具有全局和静态全局变量的头文件,并将其包含在源文件中,则ans对两者都使用extern,并打印其打印值。

如果我这样做了,它不会给出任何错误或警告。程序将运行,两个值都显示在源文件中。

头文件header.h

代码语言:javascript
复制
int varGlobal;
static int staticVarGlobal = 10

源文件

代码语言:javascript
复制
#include<iostream>
#include "header.h"

extern int varGlobal;
extern int staticVarGlobal;

using namespace std;

int main()
{
cout<<"Global variable : "<<varGlobal<<endl;
cout<<"Static Global variable : "<<++staticVarGlobal<<endl;
}
代码语言:javascript
复制
Output

Global variable : 0
Static Global variable : 11

这是怎么回事?

EN

回答 1

Stack Overflow用户

发布于 2015-02-25 12:13:21

静态关键字使变量只具有“文件范围”,即仅限于该翻译单元。extern关键字用于需要告诉编译器该变量是在其他地方定义的变量。因此,extern关键字会阻止定义,只会使其成为一个声明。

代码语言:javascript
复制
int a; // declaring and defininig an integer
extern int b; // declaration, tell the compiler that the definition of b is somewhere else

对于函数,这是隐含的:

代码语言:javascript
复制
void foo();

是相同的

代码语言:javascript
复制
extern void foo();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28718617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档