我有一个带有内联函数的命名空间,如果有多个源文件,它将被使用。 尝试链接我的应用程序时,内联函数被报告为重复符号。 似乎我的代码根本不会内联函数,我想知道这是否是预期的行为以及如何最好地处理它。
我使用以下 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 在上面的评论中提到的那样,它可能是预编译的 header 。我遇到了完全相同的问题,删除构建目录并重新编译解决了它。
关于c++ - 命名空间中的内联函数在 gcc 链接期间生成重复符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3763746/