在命名空间中声明变量

Declaring variable in namespace

本文关键字:变量 声明 命名空间      更新时间:2023-10-16

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

一般来说,我有以下代码:

#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

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

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

因此,实际上,(现已接受的(提案允许您使用 用于定义外部链接的内联关键字 const 命名空间作用域 变量或任何静态类数据成员,在头文件中,以便 当该标头包含在 链接器可以有多个翻译单元 - 它只是选择 其中之一。

此外,您使用的某些标识符是保留的。请参阅此内容以获取更多内容:

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