C++-一个cpp文件定义的函数如何在另一个cpp文件被引用
在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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
跟extern无关,就是你编译链接时候的问题。在main里调用你写的函数首先你要让main的那份代码文件能找到函数的声明,其次是找到定义,看看链接方面的资料吧
好好研究下extern和头文件的功能吧
你说是“执行时报”错,实际上只有在连接时才会报诸如 undefined reference to `add(int, int)' 这种错误。
很可能你在编译连接的时候没有把源文件“test1.cpp”加入到命令中。想一下,你的编译命令是不是类似于 gcc test2.cpp ?把它改为 gcc test1.cpp test2.cpp 试试看
你滥用了extern,这种情况根本不需要extern关键字
试试把你的2个extern全部删掉或者删掉c文件里面的那个
不是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;
}
编译运行均无误。