【发布时间】:2013-10-23 16:21:38
【问题描述】:
我在here 之类的地方读到过,您必须包含 .h 文件而不是 .cpp 文件,否则会出现错误。比如
main.cpp
#include <iostream>
#include "foop.h"
int main(int argc, char *argv[])
{
int x=42;
std::cout << x <<std::endl;
std::cout << foo(x) << std::endl;
return 0;
}
foop.h
#ifndef FOOP_H
#define FOOP_H
int foo(int a);
#endif
foop.cpp
int foo(int a){
return ++a;
}
有效,但如果我将 #include "foop.h" 替换为 #include "foop.cpp" 会出现错误(使用 Dev C++ 4.9.9.2,Windows):
multiple definition of foo(int)
first defined here
这是为什么?
【问题讨论】:
-
这个例子应该编译得很好。有没有遗漏的细节?
-
您是否只包含 .cpp?在这种简单的情况下应该允许这样做。包括 .h 和 .cpp 显然乘法定义了函数
标签: c++