C++-一个cpp文件定义的函数如何在另一个cpp文件被引用

发布于 2017-01-08 17:49:29 字数 406 浏览 1582 评论 5

在C++中,一个cpp文件定义的函数如何在另一个cpp文件被引用,我试了用extern,但还是说没有引用该函数
//header.h
extern int add(int a, int b);

//test1.cpp
extern int add(int a,int b)
{
cout<<add(1,2)<<endl;
}
//test2.cpp
''''''
#include "header.h"
''''''
int main()
{
cout<<add(10,20)<<endl;//执行时报 undefined reference to `add(int, int)'
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

夜无邪 2017-10-19 21:16:50

跟extern无关,就是你编译链接时候的问题。在main里调用你写的函数首先你要让main的那份代码文件能找到函数的声明,其次是找到定义,看看链接方面的资料吧

晚风撩人 2017-09-22 17:26:21

好好研究下extern和头文件的功能吧

泛泛之交 2017-07-27 06:56:47

你说是“执行时报”错,实际上只有在连接时才会报诸如 undefined reference to `add(int, int)' 这种错误。

很可能你在编译连接的时候没有把源文件“test1.cpp”加入到命令中。想一下,你的编译命令是不是类似于 gcc test2.cpp ?把它改为 gcc test1.cpp test2.cpp 试试看

虐人心 2017-07-08 07:10:21

你滥用了extern,这种情况根本不需要extern关键字

试试把你的2个extern全部删掉或者删掉c文件里面的那个

归属感 2017-03-02 21:09:57

不是extern关键字的问题,我测试过了!

//test1.cpp
extern int add(int a,int b)
{
cout<<add(1,2)<<endl;//此处的add函数你定义并实现了吗?
}

cout<<add(1,2)<<endl中用到的add函数你定义并实现了吗?另外,test1.cpp中要#include"test1.h"。

下面是我修改后的代码:

//test1.h

#ifndef TEST_H
#define TEST_H

extern int add(int a, int b);

#endif

//tets1.cpp

#include"test.h"
#include<iostream>

using namespace std;

extern int add(int a,int b)
{
return a+b;
}

//main.cpp

#include"test.h"
#include<iostream>

using namespace std;

int main()
{
cout<<add(10,20)<<endl;

return 0;
}

编译运行均无误。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文