【发布时间】:2013-08-04 14:33:27
【问题描述】:
Many other questions 通过在头文件中声明变量并在 .cpp 文件中定义(分配)变量来处理如何分配变量。
我想要做的是不为我的类使用任何 .cpp 文件,并将所有函数定义为内联(在头文件中)。我遇到的问题是如何定义静态成员变量,这样即使 .h 文件包含在多个编译单元中,我也不会收到“第一次在这里定义”链接器错误。
如果可以完成工作,我愿意接受预处理器黑客等。我只是想避免任何 .cpp 文件。
如果重要的话,我正在使用 GCC。
【问题讨论】:
-
您只需将变量声明为
static。将在包含头文件的每个翻译单元中创建变量的新实例,但在链接时,不会有冲突,因为对象具有静态链接... -
不,静态数据成员有外部链接。
-
“定义它(分配)”:定义和分配是两个不同的东西。
-
@cmaster - 分配是定义的部分,但它们不是一回事。
-
@PeteBecker 确实这些词具有不同的含义,但是对于变量,它们本质上是同义词,因此“定义它(分配)”没有任何问题。但是这个讨论没有任何结果,所以我建议我们都删除我们的 cmets。