我是c++的初学者,我读过一些代码,在这些代码中,我看到全局变量一直持续到程序的末尾,静态全局变量在file.Here结束之前都有作用,这是一个示例程序,我试图在另一个文件中访问全局变量和静态全局变量。
有谁能解释一下如何在c++中使用extern作为静态全局变量?
如果我有一个具有全局和静态全局变量的头文件,并将其包含在源文件中,则ans对两者都使用extern,并打印其打印值。
如果我这样做了,它不会给出任何错误或警告。程序将运行,两个值都显示在源文件中。
头文件header.h
int varGlobal;
static int staticVarGlobal = 10源文件
#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;
}Output
Global variable : 0
Static Global variable : 11这是怎么回事?
发布于 2015-02-25 12:13:21
静态关键字使变量只具有“文件范围”,即仅限于该翻译单元。extern关键字用于需要告诉编译器该变量是在其他地方定义的变量。因此,extern关键字会阻止定义,只会使其成为一个声明。
int a; // declaring and defininig an integer
extern int b; // declaration, tell the compiler that the definition of b is somewhere else对于函数,这是隐含的:
void foo();是相同的
extern void foo();https://stackoverflow.com/questions/28718617
复制相似问题