我试图在另一个源文件中分离我的函数.但我得到的错误是添加功能的多重定义.
主要源文件
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)
你需要的是:
"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.h和calc.cpp而不是myHeader.h.
不包括calc.cpp来自myHeader.h. 除了这一行之外,就标题而言,您的示例是正确的。(main()应该返回一个值)。
calc.cpp和main.cpp是两个不同的“编译单元”,它们将分别编译成目标文件。然后,链接器将这两个目标文件组合成一个可执行文件。
| 归档时间: |
|
| 查看次数: |
11407 次 |
| 最近记录: |