当前位置:   article > 正文

C++程序的联合编译

联合编译

在一些工程代码中,将函数的声明头文件和函数的实现分开,这样可以隐藏函数实现的细节,保护核心代码,也更规整。

下面的例子中,array.h中只有函数的声明,函数的具体实现在array.cpp中,编译时必须用g++联合编译命令,DEV无法编译,因为需要用array.cpp和main.cpp共同编译出可执行文件main.exe。

三个文件:

array.h

  1. #ifndef ARRAY_H
  2. #define ARRAY_H
  3. #include<iostream>
  4. using namespace std;
  5. void sameful(int *a,int n,int x); // 将数组的所有元素设置为一指定值
  6. void add(int *a,int *b,int *c,int n); //合并两个数组的内容
  7. int find(int *a,int n,int x); //查找某个数在数组中的位置
  8. int del(int *a,int n,int x); //从数组中删除某个数
  9. void c_sort(int *a,int n); //将数组从小到大排序
  10. void print(int *a,int n); //输出结果
  11. #endif

array.cpp

  1. #include"array.h"
  2. // 将数组的所有元素设置为一指定值
  3. void sameful(int *a,int n,int x){
  4. for (int i=1; i<=n; i++)
  5. a[i]=x;
  6. }
  7. //合并两个数组的内容
  8. void add(int *a,int *b,int *c,int n){
  9. for (int i=1; i<=n; i++)
  10. c[i]=a[i]+b[i];
  11. }
  12. //查找某个数在数组中的位置
  13. int find(int *a,int n,int x){
  14. for (int i=1; i<=n; i++)
  15. if (a[i]==x) return (i);
  16. return 0;
  17. }
  18. //从数组中删除某个数
  19. int del(int *a,int n,int x){
  20. int t=0;
  21. for (int i=1; i<=n; i++)
  22. if (a[i]==x){
  23. t++;
  24. for (int j=i; j<=n; j++)
  25. a[j]=a[j+1];
  26. }
  27. return (n-t);
  28. }
  29. //将数组从小到大排序
  30. void c_sort(int *a,int n){
  31. for (int i=1; i<=n; i++)
  32. for( int j=n-1; j>=i; j--)
  33. if (a[j]>a[j+1]){
  34. int t=a[j];
  35. a[j]=a[j+1];
  36. a[j+1]=t;
  37. }
  38. }
  39. //输出结果
  40. void print(int *a,int n){
  41. for (int i=1;i<=n; i++)
  42. cout<<a[i]<<" ";
  43. cout<<endl;
  44. }

main.cpp

  1. #include"array.h"
  2. int main(){
  3. int n,x,ans;
  4. int a[1000],b[1000],c[1000];
  5. cout<<"读入N及N个数"<<endl;
  6. cin>>n;
  7. for (int i=1; i<=n; i++)
  8. cin>>a[i];
  9. cout<<"输入需要查找的数"<<endl;
  10. cin>>x;
  11. ans=find(a,n,x);
  12. cout<<"查找的数的位置为"<<ans<<endl;
  13. cout<<"输入需要删除的数"<<endl;
  14. cin>>x;
  15. n=del(a,n,x);
  16. print(a,n);
  17. c_sort(a,n);
  18. cout<<"数组从小到大排序结果为"<<endl;
  19. print(a,n);
  20. cout<<"输入将数组改变为统一的数"<<endl;
  21. cin>>x;
  22. sameful(a,n,x);
  23. print(a,n);
  24. cout<<"再读入N个数,将计算两个数组的和"<<endl;
  25. for (int i=1; i<=n; i++)
  26. cin>>b[i];
  27. add(a,b,c,n);
  28. print(c,n);
  29. return 0;
  30. }

g++命令:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/329566
推荐阅读
相关标签
  

闽ICP备14008679号