在名称空间中声明变量

时间:2019-09-08 19:52:24

标签: c++ namespaces

我想知道如何在名称空间中声明全局变量。

通常。h,我有以下代码:

#include <iostream>

#pragma once

#ifndef TEST_NAMESPACE
#define TEST_NAMESPACE

namespace general
{
    int n;
}

#endif

在我的程序中,包括general.h时,出现此错误:

  

已在中定义的错误LNK2005“ int general :: n”(?n @ general @@ 3HA)   general.obj

1 个答案:

答案 0 :(得分:0)

使用关键字extern进行声明并在.cpp文件中进行定义。

另一种解决方案是使用inline关键字。自C ++ 17起,inline变量是可能的。了解有关它们的更多信息here

  

因此,实际上,(现在已接受)的提案允许您使用   inline关键字,用于定义外部链接const名称空间范围   头文件中的变量或任何静态类数据成员,以便   该标头包含在其中时产生的多个定义   链接器可以使用多个翻译单元-只需选择   其中之一。

此外,您使用的某些标识符是保留的。有关更多信息,请参见this

  

所有以下划线和大写字母开头的标识符   字母或其他下划线始终保留供任何使用。

相关问题