【发布时间】:2014-03-11 01:27:10
【问题描述】:
我真的不明白这背后的原因,但我想我已经弄清楚了。
我的兄弟正在做一个家庭作业项目,他们正在使用 Visual Studio。他在编译他的项目时遇到了问题。该项目包括:
main.cpp
classes.h
class_functions.cpp
general_functions.cpp
它们具有以下导入结构:
main.cpp
#include "classes.h"
#include "class_functions.cpp"
#include "general_functions.cpp"
class_functions.cpp
#include "classes.h"
general_functions.cpp
#include "classes.h"
他在尝试编译时不断收到链接错误,尽管 g++ 可以很好地编译它。所以我尝试通过 Visual Studio 命令提示符和cl。这编译得很好,所以我尝试了msbuild,它(显然?)失败了。我进入了 vxproj 文件,因为嘿,它告诉cl 我不是什么?
在 proj 文件中,它包括 classes.h、general_functions.cpp 和 class_functions.cpp,以及 main.cpp。当我删除通用函数和类函数时,msbuild 运行得很好。将它们中的任何一个放回去并boom。 classes.h 包含
#ifndef myclasses
#define myclasses
/* Code here */
#endif
而其他.cpp 文件包含类似的指令。
我终于想出了消除问题的方法——消除
#include "general_functions.cpp"
#include "class_functions.cpp"
来自代码库,现在 Visual Studio 可以很好地编译它。
问题是为什么?这样做的理由或可能的好处是什么?
【问题讨论】:
标签: c++ visual-studio visual-studio-2012 msbuild