extern关键字在C++中的用法

Usage of extern keyword in C++

本文关键字:用法 C++ 关键字 extern      更新时间:2023-10-16

根据我所收集的信息,c++中的'extern'关键字可以用来告诉编译器变量是在另一个.cpp文件中定义的。我想知道这个定义是否必须是显式的,或者定义变量的.cpp文件中的函数是否可以通过副作用来更改定义。

//a.h
extern int foo;
//a.cpp
#include <a.h>
int foo=0;
int func(int &foo) // EDIT: oops, forgot the type for the parameter and return statement
{
foo = 10;
return 5;
}
int x = func(foo); // EDIT: changed to match declaration and assigned function to dummy variable
//b.cpp
#include <a.h>
int main()
{
cout << foo;
return 0;
}

程序能识别出foo应该是10吗?还是会是0?如果编译器将foo识别为0,有没有办法让它识别为10?此外,我不能自己编译和测试的原因是,当有多个文件时,我不知道如何编译,我是新手=)。

编辑:谢谢你的错误指针,但我想主要的问题仍然是b.cpp是否能看到foo是10还是0。干杯

应该是10。

解释:

首先,陈述

int x=func(foo);

将在进入main函数之前和之后调用

int foo=0;

其次,func中的foo将隐藏全局foo,因此func中的foo将仅通过引用应用于传入参数。

第三,你的代码不会被编译。原因1:您没有使用系统中的标头,因此需要#include "header.h"而不是#include <header.h>。原因2:对于cout,假设您没有使用过时的VC 6.0,则需要#include <iostream>并编写std::cout

如果您更正了所有语法错误并构建了整个项目,那么文件中会有一个名为"foo"的整数,并且可以从两个源对其进行读取和写入。在任何位置将其设置为一个值都将在任何其他位置读取。