在C+中包含文件时重新定义函数+;(错误LNK2005) 我是C++新手,我有一个基本的疑惑。br> 我正在创建一个法语动词变位应用程序 我有两个文件,一个Conjugator.cpp文件和一个serverbs.cpp文件。 我希望将大部分函数保留在服务器源文件中,并使用conjugator 文件来使用这些函数
以下是一些代码片段: Conjugator.cpp在C+中包含文件时重新定义函数+;(错误LNK2005) 我是C++新手,我有一个基本的疑惑。br> 我正在创建一个法语动词变位应用程序 我有两个文件,一个Conjugator.cpp文件和一个serverbs.cpp文件。 我希望将大部分函数保留在服务器源文件中,并使用conjugator 文件来使用这些函数,c++,redefinition,lnk2005,C++,Redefinition,Lnk2005,以下是一些代码片段: Conjugator.cpp 如果有人能告诉我如何将函数保存在单独的源文件中,并#将它们包含在一个源文件中,并在没有重新定义错误的情况下使用它们的函数,我将不胜感激 永远不要包含*.cpp文件。删除以下内容 #include "ErVerbs.cpp" #include "IrVerbs.cpp" #include "ReVerbs.cpp" 创建包含以下内容的serverbs.h: void erVerbs(); 并将其包含在Conjugator.cpp中 #incl
如果有人能告诉我如何将函数保存在单独的源文件中,并#将它们包含在一个源文件中,并在没有重新定义错误的情况下使用它们的函数,我将不胜感激 永远不要包含*.cpp文件。删除以下内容
#include "ErVerbs.cpp"
#include "IrVerbs.cpp"
#include "ReVerbs.cpp"
创建包含以下内容的serverbs.h:
void erVerbs();
并将其包含在Conjugator.cpp中
#include "ErVerbs.h"
因为你包括了模块
#include "ErVerbs.cpp"
#include "IrVerbs.cpp"
#include "ReVerbs.cpp"
在module Conjugator.cpp中,所有四个模块都包含函数的定义,编译器对此进行了说明
您必须在某些头文件中声明函数,并将其包含在使用这些函数的所有模块中,同时将它们的定义保留在一个模块(或多个模块之间)中,而该模块不会包含在任何其他模块中。您是#包括另一个.cpp>.cpp>文件中的文件,因此,函数定义将存在于两个地方
您可能想做的是创建一个Conjugator.h
头文件,声明(但不定义)函数,并将其包含在内
如果您不知道如何防止.h
文件中出现多个声明,也可以在执行时查找标题保护(或#pragma once
)
#include "ErVerbs.cpp"
在Conjugator.cpp中,这就是导致链接器错误的原因。通过像这样包含cpp文件,可以重新定义此函数
您应该创建serverbs.h文件,并将其放入函数声明中:
#if !defined(ER_VERBS_H)
#define(ER_VERBS_H)
void erVerbs();
#endif
在Conjugator.cpp中,include#include“serverbs.h”,对您的其他函数也是如此。我读到我不应该#包含.cpp文件,但我不确定如何使用#if and#define语句定义它谢谢您的帮助:'))但在哪个.cpp文件中我真正定义了函数?我不知道头罩的概念,但我一定会查的,谢谢你的建议:')
#include "ErVerbs.cpp"
#include "IrVerbs.cpp"
#include "ReVerbs.cpp"
#include "ErVerbs.cpp"
#if !defined(ER_VERBS_H)
#define(ER_VERBS_H)
void erVerbs();
#endif