Headers 和全局变量的问题

Issue with Headers and Global Variable

所以我在声明全局变量(在 header 中)和使用它时遇到了问题。我已经阅读了 header 文件及其工作原理,但我不明白为什么我的代码不起作用。

这是我所拥有的(以简化的方式):

主线:

// main.cpp

#include "source.hpp"

int main()
{
    return variable;
}

来源:

// source.cpp

#include "source.hpp"

variable = 17;

Header:

// source.hpp

#ifndef __SOURCE_HPP_INCLUDED__
#define __SOURCE_HPP_INCLUDED__

extern int variable;

#endif  // __SOURCE_HPP_INCLUDED__

我试过在 header 文件中使用和不使用 extern。 当我尝试(在源代码中编译)时出现此错误: 'variable'没有命名类型 我哪里理解不正确?

此外,当我在 main.cpp 中声明相同的变量时,编译器会返回有关 'redefining' 变量的错误。这是为什么?

在source.cpp中你需要定义变量:

int variable = 17;