#include cpp文件的问题
惭愧……
同一project两源文件A.cpp和B.cpp
//A.cpp
#include <iostream>
using namespace std;
int fdfdfuuy()
{
cout < < "a ";
return 0;
}
//B.cpp
#include "A.cpp "
int main()
{
cout < < "abc ";
getchar();
return 0;
}
自己是这样想的,用#include已将A.cpp嵌入到B.cpp中进行编译,应该没问题,但不知道为什么,VC2005和6.0下通不过编译……错误提示如下:
1> ------ 已启动生成: 项目: stack, 配置: Debug Win32 ------
1> 正在编译...
1> B.cpp
1> A.cpp
1> 正在生成代码...
1> 正在链接...
1> B.obj : error LNK2005: "int __cdecl fdfdfuuy(void) " (?fdfdfuuy@@YAHXZ) 已经在 A.obj 中定义
1> B.obj : error LNK2005: "int __cdecl fdfdfuuy(void) " (?fdfdfuuy@@$$FYAHXZ) 已经在 A.obj 中定义
1> F:\new\stack\Debug\stack.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
1> 生成日志保存在“file://f:\new\stack\stack\Debug\BuildLog.htm”
1> stack - 3 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
苦思不解啊,恳求达人指点迷津,顺便请指点一下#include包含cpp文件的用法特点或者include的用法……thx
[解决办法]
因为A.cpp的文件本身编译了一次,又被嵌入到B.cpp中编译一次,理所当然地会出现这个问题。
[解决办法]
原因如“ akirya”所说:
如果你是在想把文件放在B中编译,那么
将文件A改名为A.h文件,这样编译器不会对头文件进行编译