Dev-c++中将头文件和头文件函数分离,编译主函数跳出undefined reference to 的问题解决
更新时间: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强大的链接功能会自动查找相应函数实现文件(只在当前目录下查找)。
- 点赞
- 收藏
- 关注作者
评论(0)