我有一个简单的简单.h文件
#ifndef _HEAD
#define _HEAD
void GetNextMove(char playerSymbol, int &row, int &col);
#endif
包含在带有#include "head.h"
的.cpp文件中,该文件包含在另一个带有#include "file.cpp"
的.cpp文件中。我一直收到错误
/tmp/ccfN3b2g.o:Proj1Aux.cpp:(.text+0x0): multiple definition of `GetNextMove(char, int&, int&)'
/tmp/ccDzQLIi.o:Proj1.cpp:(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
有谁知道会导致什么?我以为#infdef...
会停止重复。
答案 0 :(得分:0)
在另一个.cpp
文件中包含一个.cpp
文件是一种非常先进的技术,在您彻底了解#include
的正常使用之前,最好避免这种技术。目前仅包含头文件。如果在另一个文件中声明的函数没有看到原型时出现错误,请将其放在.cpp
个文件中包含的头文件中。
答案 1 :(得分:0)
head.h
---------> file.cpp
--------------> xxxxx.cpp
file.cpp
有GetNextMove
函数的实现。xxxxx.cpp
不区分函数的声明和定义。head.h
)和定义(file.cpp
)视为定义,并向您显示此错误。作为解决方案:
*.cpp
个文件。*.h
)文件中保留函数声明。