C++ 多重定义

标签 c++ header-files

所以我有一个头文件,其中包含函数实现和原型(prototype)。我现在正试图将这些实现从文件中分离出来,只留下原型(prototype),因为我知道在头文件中实现这些实现并不是好的标准。但是,当我从头文件中删除实现并将它们放入自己的 cpp 文件中,然后尝试将该 cpp 文件链接到项目的其余部分时,它会提示函数的多个定义。感谢您的帮助/建议

std::bitset<LENGTH>  foo1(const std::string stringVal);
std::bitset<LENGTH>  foo2(const int decimalVal);
std::string          foo3(const int integerVal);

我有一个包含守卫,所以它也不会被包含超过一次。

然后在 cpp 中我简单地实现了这些函数。然而,如果它们与头文件分开,它会提示函数的多个定义。

编辑:我的愚蠢错误已解决。

最佳答案

那只是一个声明。即使文件没有 include guards,它也不会给出那个错误。

多重定义通常意味着您在多个实现文件中定义函数。

这是一个 list :

  • 确保实现完全在 header 之外。

  • 确保只有一个源文件定义函数

  • 确保您不包含源文件(这是微不足道的,我希望您知道不要这样做)

  • 最后,检查您是否运行了干净的构建

关于C++ 多重定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8933080/

相关文章:

c++ - 包含头文件——相对于当前目录还是包含目录?

ios - 桥接 header 将框架导入 View Controller

c++ - 错误左值需要作为一元 '&' 操作数

c++ - 为 C++ 设置 Eclipse

linux-kernel - Centos Kernelheaders 包括来自 future 内核的更改

C++ 列表,获取列表中的元素数?

c++ - 变量或字段 'name of var'声明为void

C++ 通过引用传递数组

c++ - 制作 : c: command not found

c++ - 高效存储最多 2048 个字符的数组?