我正在使用 Code::Blocks。当我创建一个头文件foo.h
并在其中提出声明和实现时,编译工作正常。创建一个foo.cpp
文件并在其中放入任何内容仍然有效。但是,当我在实现文件中包含头文件,但将实现保留在头文件中时,我收到一个关于multiple declarations
.
我当前项目的示例
// header-file `GKit/math/blendprocs.cpp`
#include "GKit/utils/Color.h"
#ifndef _GKIT_MATH_BLENDPROCS_H_
#define _GKIT_MATH_BLENDPROCS_H_
namespace GKit {
namespace math {
void blendAoverB(GKIT_COLORBLENDPROC_ARGSX) {
D.a = A.a + (1 - A.a) * B.a;
D.r = (A.a * A.r + (1 - A.a) * B.a * B.r) / D.a;
D.g = (A.a * A.g + (1 - A.a) * B.a * B.g) / D.a;
D.b = (A.a * A.b + (1 - A.a) * B.a * B.b) / D.a;
GKIT_UTILS_COLOR_NORMALIZE(D);
}
}
}
#endif // _GKIT_MATH_BLENDPROCS_H_
// implementation-file `GKit/math/blendprocs.cpp`
#include "GKit/math/blendprocs.h"
// Compilation output
-------------- Build: Debug in GKit ---------------
Compiling: GKit\math\blendprocs.cpp
Linking console executable: bin_debug\GKit.exe
build_debug\GKit\math\blendprocs.o:C:\Users\niklas\Desktop\GKit/./GKit/math/blendprocs.h:10: multiple definition of `GKit::math::blendAoverB(GKit::utils::Color const&, GKit::utils::Color const&, GKit::utils::Color&)'
build_debug\main.o:C:\Users\niklas\Desktop\GKit/./GKit/math/blendprocs.h:10: first defined here
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
2 errors, 0 warnings
你能帮我理解这个错误吗?