我有一个带有内联函数的 namespace ,如果有多个源文件,将使用该 namespace 。
尝试链接我的应用程序时,内联函数报告为重复符号。
似乎我的代码根本不会内联函数,并且我想知道这是否是预期的行为以及如何最好地对其进行处理。
我使用以下gcc选项:
-g -Wextra -pedantic -Wmissing-field-initializers -Wredundant-decls -Wfloat-equal -Wno-reorder -Wno-long-long
在VC7环境中构建时,相同的代码样式似乎可以正确编译和链接。
以下代码示例显示了代码的结构:
/* header.h */
namespace myNamespace {
inline bool myFunction() {return true;}
}
/* use_1.cpp */
#include "header.h"
...
bool OK = myNamespace::myFunction();
...
/* use_2.cpp */
#include "header.h"
...
bool OK = myNamespace::myFunction();
...
最佳答案
删除dll/exe的生成目录,然后重新编译。
构建可能存在一些问题。 OP可能在上面的评论中提到了它的预编译头信息。我遇到了完全相同的问题,删除了构建目录并重新编译就解决了。
关于c++ - namespace 中的内联函数在gcc上的链接期间生成重复的符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3763746/