如何在其他源文件中定义函数:C++ CodeBlocks

COD*_*ror 6 c++ header-files

我试图在另一个源文件中分离我的函数.但我得到的错误是添加功能的多重定义.

主要源文件

Main.cpp的

#include<iostream>
#include "myHeader.h"
using namespace std;

int main()
{
int result = add(1,2);
}
Run Code Online (Sandbox Code Playgroud)

头文件"myHeader.h"

#include "calc.cpp"
int add(int, int);
Run Code Online (Sandbox Code Playgroud)

其他源文件"calc.cpp"

int add(int a, int b)
{
return a+b;
}
Run Code Online (Sandbox Code Playgroud)

Sea*_*ean 8

你需要的是:

"myHeader.h"

#ifndef MY_HEADER
#define MY_HEADER
 int add(int, int);
#endif 
Run Code Online (Sandbox Code Playgroud)

calc.cpp

#include "myHeader.h"

int add(int a, int b)
{
 return a+b;
}
Run Code Online (Sandbox Code Playgroud)

main.cpp中

#include "myHeader.h"

int main()
{
  int result = add(1,2);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

没有将.cpp包含在.h中.头文件用于告诉编译器是否存在具有指定原型的函数,但是liker将关注将函数调用与该函数的实现进行匹配.

此外,它通常是一个好主意,让你头文件和.cpp相同的名称,所以calc.hcalc.cpp而不是myHeader.h.


Typ*_*eIA 4

不包括calc.cpp来自myHeader.h. 除了这一行之外,就标题而言,您的示例是正确的。(main()应该返回一个值)。

calc.cppmain.cpp是两个不同的“编译单元”,它们将分别编译成目标文件然后,链接器将这两个目标文件组合成一个可执行文件。