c++ - 我们可以定义一个与它关联的外部存储类的变量吗?
问题描述
我正在从该网站上阅读有关外部存储类的信息:
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 的定义
由于我们无法定义作为外部存储类的变量,它如何正常工作?
这是否意味着如果一个外部变量已经在脚本中的某个地方定义了,然后如果我在我的代码中进一步重新定义它,它就会起作用?
解决方案
关键字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
我们定义了在文件中声明的名为的全局变量。var
somefile.h
主文件
#include "somefile.h"
#include <iostream>
int main(void)
{
std::cout<< var<<std::endl; //prints 10
return 0;
}
在上面的文件中,main.cpp
我们使用了(打印在控制台上)名为的全局var
变量,但没有在main.cpp
. 这是可能的,因为我所说的变量var
具有外部链接。
程序的输出可以在这里看到。
推荐阅读
- javascript - 为什么 arg1 和 arg2 未定义?
- excel - 自动填充说明
- javascript - Sharepoint 2013 newform.aspx 尝试禁用保存按钮,直到选中多个复选框
- c - 无法弄清楚为什么“sizeof(msg) = 0”
- mobx-state-tree - 如何制作易失的模型/参考字段?
- client-server - TOR python上的TLS-PSK
- python - 如何绘制一列平均值的直方图,而 bin 由 Pandas 中的另一列定义
- gradle - 如何获取 Gradle TestKit 测试项目的`sourceSets`?
- python - NAME 公式中的间接引用过多
- python - 我缺少什么来修复与金融 API 相关的 SSL 错误?