标题和全局变量的问题

时间:2016-01-25 01:26:03

标签: c++ global-variables header-files precompiled-headers

所以我在声明一个全局变量(在标题中)并使用它时遇到了问题。我已经对头文件以及它们如何工作做了一些阅读,但我无法理解为什么我的代码无效。

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

主要

// main.cpp

#include "source.hpp"

int main()
{
    return variable;
}

来源:

// source.cpp

#include "source.hpp"

variable = 17;

标题

// source.hpp

#ifndef __SOURCE_HPP_INCLUDED__
#define __SOURCE_HPP_INCLUDED__

extern int variable;

#endif  // __SOURCE_HPP_INCLUDED__

我在头文件中尝试使用和不使用 extern 。 当我尝试(在源代码中编译)时出现此错误: 'variable'未命名类型 我不理解的是什么?

此外,当我在 main.cpp 中声明相同的变量时,编译器确实会抛出有关“重新定义”变量的错误。那是为什么?

1 个答案:

答案 0 :(得分:2)

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

int variable = 17;