【C++】单独编译--一个大型程序如何构造?

目录

程序分为三部分

头文件包含的内容:

 coordin.h

 file1.cpp

file2.cpp

运行结果

多个库连接问题


 程序分为三部分

  1. 头文件:包含结构声明和使用这些结构的函数原型
  2. 源代码文件:包含与结构相关的函数原型代码
  3. 源代码文件:包含main,调用与结构相关的代码

头文件包含的内容:

  • 函数原型
  • 使用#define 或者const 定义的符号常量
  • 结构声明
  • 类声明
  • 模板声明
  • 内联函数

 coordin.h


  
  1. // coordin.h -- 结构和函数声明
  2. // structure templates
  3. // 直角坐标系--极坐标系的转换
  4. #ifndef COORDIN_H_
  5. #define COORDIN_H_
  6. struct polar //极坐标
  7. {
  8. double distance;
  9. double angle;
  10. };
  11. struct rect //直角坐标系
  12. {
  13. double x;
  14. double y;
  15. };
  16. // prototypes
  17. polar rect_to_polar(rect xypos);
  18. void show_polar(polar dapos);
  19. #endif

 file1.cpp


  
  1. // file1.cpp -- example of a three file program
  2. #include<iostream>
  3. #include"coordin.h"
  4. using namespace std;
  5. int main()
  6. {
  7. rect rplace;
  8. polar pplace;
  9. cout << "请输入x和y的值:" << endl;
  10. while (cin>>rplace.x>>rplace.y)
  11. {
  12. pplace = rect_to_polar(rplace);
  13. show_polar(pplace);
  14. cout << "下一组x,y的值(输入q退出):" << endl;
  15. }
  16. cout << "老铁,下次再见!" << endl;
  17. return 0;
  18. }

file2.cpp


  
  1. // file2.cpp -- 包含file1.cpp的函数
  2. #include<iostream>
  3. #include<cmath>
  4. #include"coordin.h"
  5. //本函数转换直角坐标系到极坐标系
  6. polar rect_to_polar(rect xypos)
  7. {
  8. using namespace std;
  9. polar answer;
  10. answer.distance = sqrt(xypos.x*xypos.x + xypos.y*xypos.y);
  11. answer.angle = atan2(xypos.y, xypos.x);
  12. return answer;
  13. }
  14. // 显示极坐标,转换角度到弧度
  15. void show_polar(polar dapos)
  16. {
  17. using namespace std;
  18. const double Rad_to_deg = 57.29577951;
  19. cout << "distance = " << dapos.distance;
  20. cout << ",angle = " << dapos.angle*Rad_to_deg;
  21. cout << " degrees\n";
  22. }

运行结果

多个库连接问题

9.1节 

文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。

原文链接:kings.blog.csdn.net/article/details/95988305

(完)