以下代码结构:
#ifndef ARRAY_STACK_H
#define ARRAY_STACK_H
#include "Array.h"
// class ArrayStack
#endif
#include "ArrayStack.h"
// ArrayStack's methods
#ifndef ARRAY_HEADER
#define ARRAY_HEADER
#include <iostream>
// class Array
#endif
#include "Array.h"
// Array's methods
#include "ArrayStack.h"
int main() {
return 0;
}
生成这些错误:
LNK1169找到一个或多个多重定义的符号
LNK2005 _main已在Array.obj中定义
这里有什么问题?请注意Array.cpp
第一次包含在项目中时确实已经定义int main()
,但不再有它(ArrayStack.cpp
)也没有。此外,当省略int main()
中的main.cpp
时,代码编译得很好......
答案 0 :(得分:2)
错误消息表示在所有已编译的代码* .obj文件中,链接器找到多个main()
函数。一个显然是在main.cpp。
如评论中所提到的,第一个想到的解决方案是以某种方式删除* .obj文件(强制执行)重新编译。
如果这没有改变,请尝试从头开始单独重建解决方案。从main.cpp开始,不带include。然后连续添加您确信不会出错的文件。也许你必须在某些情况下注释掉某些行以使编译成为可能。