【发布时间】:2015-09-24 07:28:04
【问题描述】:
我在两个 .cpp 文件中定义了一个变量 const char * FILENAME = "a/file/name",称为 a.cpp 和 b.cpp。没有任何东西直接包含这些文件,它们只分别包含a.h和b.h。然后这两个头文件都包含在main.cpp
我的问题是我收到以下链接器错误:
a.obj : error LNK2005: "char const * const FILENAME" (?FILENAME@@3PBDB) already defined in b.obj
我不经常使用文件范围变量,所以我认为这没关系...我在这里做错了什么?
【问题讨论】:
-
是的,这违反了单一定义规则。
FILENAME有两个定义。一个简单的解决方法是将其设为static const char FILENAME[] = "a/file/name"; -
@Morlacke 不,不是。
FILENAME不是 OP 代码中的const。const适用于被指向的东西。 -
话虽如此,错误消息显示
char const * const FILENAME所以也许你做了其中一个const而另一个不是const
标签: c++ linker linker-errors