【发布时间】:2018-12-10 16:01:16
【问题描述】:
我在两个不同的文件中声明了一些静态变量(例如 var1 和 var2)。两个文件中的变量名称相同。有些变量(比如 var1)没有在它们的声明中初始化,有些是(var2),如下所示。
file1.h
static bool var1;
static bool var2 = false;
file2.h
static bool var1;
static bool var2 = false;
根据我的理解,静态变量仅限于声明它们的 c 文件(或 h 文件),因此在多个头文件中使用相同的变量名应该是安全的。但是当我编译代码时,我得到错误“redefinition of var2”,仅针对已初始化的变量。
- 为什么这个错误只发生在 var2 上?
- 我的实现还好吗?
编辑: 由于有人提到使用 extern 关键字,我想澄清一下 var1 和 var2 在不同的 c 文件中应该有不同的值,并且应该仅限于它们各自的文件,
【问题讨论】:
-
头文件被复制到
.c文件中。如果将两个标题都包含在同一个文件中,则会有多个定义。 -
var1只有一个暂定定义。 -
在头文件中使用
extern:When to use extern in C++
标签: c variables static header-files static-initialization