Dev-c++中将头文件和头文件函数分离,编译主函数跳出undefined reference to 的问题解决

举报
计算机魔术师 发表于 2022/08/13 21:52:54 2022/08/13
【摘要】 ​更新时间:2022.5.13  8:00解决方法一:使用visual studio 2022 编译器进行编译源代码:类的声明:#include<iostream>#include<string.h>#include<string>using namespace std;//Student.hclass Student{private:int num;string name;char sex...

更新时间:2022.5.13  8:00

解决方法一:使用visual studio 2022 编译器进行编译
源代码:

类的声明:

#include<iostream>
#include<string.h>
#include<string>
using namespace std;
//Student.h
class Student
{
private:
int num;
string name;
char sex;
public:
void set_value();
void show_value();
};
成员函数定义

#include<iostream>
#include"类.h"
using namespace std;
void Student::set_value()
{
cin >> num >> name >> sex;
}
//先编译此文件
void Student::show_value()
{
cout << “num:” << num << “name:” << name << “sex:” << sex;
}
主函数:(特别解释:主函数第一段的#define 是为了使用printf和scanf(visual stdio 2022 认为其不安全不能使用,需要引入这个宏定义))

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include"类.h"

using namespace std;

int main()
{
Student s1, s2;
s1.set_value();
s2.set_value();
s1.show_value();
s2.show_value();

return 0;

}
问题解决:

解决方法二:

所以在dev-c++应该依次引入文件。代码如下:

1、成员函数定义文件    define.cpp

#include<iostream>
#include"class.h"
using namespace std;
void Student::set_value()
{
cin >> num >> name >> sex;
}
//先编译此文件
void Student::show_value()
{
cout << "num: " << num << "name: " << name << "sex: " << sex<<endl;
}
2、类声明文件  class.h

#include<iostream>
#include<string>
using namespace std;

class Student
{
private:
int num;
string name;
char sex;
public:
void set_value();
void show_value();
};
3、主函数文件  main.cpp (这里引入了.cpp , 而 Vscode 则是引入 class.h

#include"define.cpp"
#include<iostream>
using namespace std;

int main()
{
Student s1, s2;
s1.set_value();
s2.set_value();
s1.show_value();
s2.show_value();

return 0;

}
编译运行结果如图:

我们来分析一下:

总结:
在dev-c++中是一个一个文件查找,需要使用相应文件功能就需要引入。而在visual studio 2022 是创建文件是一个工程,在引入头文件中,如果在该头文件有函数声明,那么在使用该头文件中,vscode强大的链接功能会自动查找相应函数实现文件(只在当前目录下查找)。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。