在头文件上包含 cpp 文件有缺点吗?

Is there a downside to including a cpp file over a header file?

我知道头文件有它们的用途,尤其是在接口的情况下,但是有什么理由不应该直接包含 cpp 文件吗?你仍然可以在 cpp 中使用 include guards and/or pragma once 那么除了可能违反标准实践之外真的有任何理由吗?

我们有头文件是有原因的。它(主要)将一些代码的接口与其实现分开。一些好处包括编译器必须通过更少的代码,并且在您更改其定义时不必重新编译使用函数的每个文件。正如评论中指出的那样,包含源文件也可能违反 ODR。