首页 > 解决方案 > 我们可以定义一个与它关联的外部存储类的变量吗?

问题描述

我正在从该网站上阅读有关外部存储类的信息:

https://www.geeksforgeeks.org/understanding-extern-keyword-in-c/

有这个例子:

#include "somefile.h" 
extern int var; 
int main(void) 
{ 
 var = 10; 
 return 0; 
}

假设 somefile.h 有 var 的定义

由于我们无法定义作为外部存储类的变量,它如何正常工作?

这是否意味着如果一个外部变量已经在脚本中的某个地方定义了,然后如果我在我的代码中进一步重新定义它,它就会起作用?

标签: c++externstorage-class-specifier

解决方案


关键字extern表示外部链接。下面给出的示例给出了一些关于extern使用的基础知识。

某个类.h

#pragma once
extern int var; //this DECLARES an GLOBAL int variable named var with EXTERNAL LINKAGE

在上面someclass.h,我们声明了一个名为外部链接的全局 int变量。这意味着我们将能够从其他文件中使用此变量。var

某类.cpp

#include "somefile.h"
int var = 10; //this DEFINES the GLOBAL int variable named var that was DECLARED inside somefile.h with external linkage

在上面的文件中,someclass.cpp我们定义了在文件中声明的名为的全局变量。varsomefile.h

主文件

#include "somefile.h" 
#include <iostream>
int main(void) 
{ 
 std::cout<< var<<std::endl;  //prints 10
 return 0; 
}

在上面的文件中,main.cpp我们使用了(打印在控制台上)名为的全局var变量,但没有在main.cpp. 这是可能的,因为我所说的变量var具有外部链接

程序的输出可以在这里看到。


推荐阅读