在命名空间中声明变量
Declaring variable in namespace
我想知道如何在命名空间中声明全局变量。
一般来说,我有以下代码:
#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 命名空间作用域 变量或任何静态类数据成员,在头文件中,以便 当该标头包含在 链接器可以有多个翻译单元 - 它只是选择 其中之一。
此外,您使用的某些标识符是保留的。请参阅此内容以获取更多内容:
以下划线和大写字母开头的所有标识符 字母或其他下划线始终保留用于任何用途。
相关文章:
- 在将变量声明为引用时,堆在释放后使用
- 静态变量声明和定义
- 在变量声明中使用 for 循环
- 向量索引变量声明(size_t 或 std::vector<DATATYPE>::size_type)
- C++ 类型类的变量声明不命名类型?
- 将本地 OpenCV Mat 变量声明为静态以防止重新分配
- std::enable_if 更改成员 *变量* 声明/类型
- 在C++中,变量声明左侧的大括号是什么意思?
- 将变量声明为全局变量,然后声明为局部变量 -Shadowing-
- 命名空间内C++变量声明
- 将静态全局变量声明为内联有什么意义吗?
- 如何将一个变量声明为另一个变量的值
- 如何将迭代器变量声明为私有成员变量
- 没有变量声明为函数,但错误:二进制表达式的操作数无效
- 有没有人有书面证据来保证函数中参数的定义方式与普通变量声明相同?
- ClangTool 如何获取变量声明中模板参数的位置?
- 标准与显式自动推导变量声明
- C 静态变量声明怪异链接器错误
- 如何为数组成员变量声明 getter/setter
- 可视C++变量声明