gpt4 book ai didi

c++ - 何时在C++中使用extern

转载 作者:行者123 更新时间:2023-12-02 10:57:22 25 4
gpt4 key购买 nike

我正在阅读“在C++中思考”,它刚刚介绍了extern声明。例如:

extern int x;
extern float y;

我想我理解了含义(没有定义的声明),但是我想知道它何时证明有用。

有人可以提供例子吗?

最佳答案

当您具有全局变量时,这很有用。您可以在 header 中声明全局变量的存在,以便每个包含 header 的源文件都知道它,但是只需要在一个源文件中“定义”一次即可。

为了明确起见,使用extern int x;告诉编译器在某处存在一个名为intx类型的对象。知道它的存在不是编译器的工作,它只需要知道类型和名称,就知道如何使用它。编译完所有源文件后,链接器会将x的所有引用解析为它在已编译源文件之一中找到的一个定义。为了使其起作用,x变量的定义需要具有所谓的“外部链接”,这基本上意味着它需要在函数外部(通常称为“文件范围”)声明,而无需使用static关键字。

header :

#ifndef HEADER_H
#define HEADER_H

// any source file that includes this will be able to use "global_x"
extern int global_x;

void print_global_x();

#endif

来源1:
#include "header.h"

// since global_x still needs to be defined somewhere,
// we define it (for example) in this source file
int global_x;

int main()
{
//set global_x here:
global_x = 5;

print_global_x();
}

来源2:
#include <iostream>
#include "header.h"

void print_global_x()
{
//print global_x here:
std::cout << global_x << std::endl;
}

关于c++ - 何时在C++中使用extern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58784994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com