当前位置: 首页 > news >正文

C++ 学习与 CLion 使用:(十五)多文件编程,和C语言一样的多文件编程

上一篇下一篇
多文件编程待发

多文件编程

实际开发中,我们为了缓解main.cpp文件的压力,我们可以将其中一些函数定义到另外的文件中,main.cpp调用即可,这也就是多文件编程。

思路如下:

  • 新建一个.h文件,用来声明函数
  • 新建一个.cpp文件,用来实现函数
  • main函数所在文件中,#include .h文件,然后调用函数去使用

1).h和.cpp文件

.h 文件是用来定义常量和函数声明的,.cpp文件是用来定义函数的。

他们之间的联系是靠在.cpp文件中引用.h头文件实现的。

  • .h 文件格式:

    #ifndef 工程名大写_文件名大写_H
    #define 工程名大写_文件名大写_H/*
    头文件引用(不需要引用自己这个.h文件)
    */
    using namespace std;  // 需要用就加这个/*
    变量声明
    *//*
    函数声明
    */#endif
    

    示例(工程名:A1_Learn_Project,文件名:func_return_arr):

    #ifndef A1_LEARN_PROJECT_FUNC_RETURN_ARR_H
    #define A1_LEARN_PROJECT_FUNC_RETURN_ARR_H#include <iostream>
    using namespace std;int * func1();  //函数返回数组(使用static)
    int * func2();  //函数返回数组(使用new)
    int * func3();  //函数返回数组(使用全局变量)
    pair <int*, int> func4();  // 函数同时返回数组和数组长度(自己问AI的)#endif //A1_LEARN_PROJECT_FUNC_RETURN_ARR_H
    
  • .cpp文件格式:

    /*
    头文件引用(要引用自己这个.h文件)
    */
    using namespace std;  // 需要用就加这个/*
    变量声明
    *//*
    定义函数
    */
    

    示例:

    #include <iostream>
    #include "func_return_arr.h"using namespace std;//函数返回数组(使用static)
    int * func1()
    {static int arr1[]={1,2,3};return arr1;
    }//函数返回数组(使用new)
    int * func2()
    {int * arr2 = new int[3]{4,5,6};return arr2;
    }//函数返回数组(使用全局变量)
    int arr3[]={7,8,9};
    int * func3()
    {arr3[2]=11;return arr3;
    }// 函数同时返回数组和数组长度(自己问AI的)
    pair <int*, int> func4()
    {static int arr4[] = {10, 12, 13};int length = sizeof(arr4) / sizeof(arr4[0]);  // 计算长度return make_pair(arr4, length);
    }
    

此时主文件的内容就可以精简为:

#include <iostream>
#include "windows.h"
#include "func_return_arr.h"using namespace std;int main() {SetConsoleOutputCP(CP_UTF8);int * p1 = func1();cout << "使用static:\t";for(int i=0;i<3;i++){cout << p1[i] << " ";}cout << endl;int * p2 = func2();cout << "使用new:\t\t";for(int i=0;i<3;i++){cout << p2[i] << " ";}cout << endl;delete[] p2;int * p3 = func3();cout << "使用全局变量:\t";for(int i=0;i<3;i++){cout << p3[i] << " ";}cout << endl;auto [p4,len] = func4();cout << "同时返回长度:\t";for(int i=0;i<len;i++){cout << p4[i] << " ";}cout << endl;return 0;
}

运行结果为:

使用static:	1 2 3 
使用new:		4 5 6 
使用全局变量:	  7 8 11 
同时返回长度:	  10 12 13 

2)引入头文件与编译

引用头文件的实际作用是:将该头文件指向的文件中的可用代码复制过来。

所以在 .cpp 文件中引入对应的 .h 头文件的目的,就是引入函数对应的声明。

而在 main 文件中引入某个子文件的 .h 头文件,也只是引入了对应的函数声明,此时如果是通过命令行编译 main.cpp 的话,要加上子文件一起编译,然后再执行;如果是直接用 CLion 编译和运行的话,直接在 main.cpp 页面点绿色三角运行按钮即可。

http://www.dtcms.com/a/403301.html

相关文章:

  • BEAT币
  • 淘宝的网站怎么做公司网站如何被收录
  • Ansible实现自动化运维
  • Zabbix7.4.8(三):通过Zabbix agent 2监控Docker相关指标
  • 小型个人网站制作网页打不开的原因及解决方法
  • Ansible 入门到实战:自动化运维的瑞士军刀
  • 嵌入式学习---(linux驱动)
  • k8s集群与gitlab registry连接
  • MySQL笔记---对表的操作
  • 【实战避坑】MySQL修改表字段长度完整指南:从语法、锁表机制到在线DDL详解
  • 乐峰网网站是谁做的海门住房和城乡建设局网站
  • 做公司简介的开源网站做网站推广前途
  • 了解学习Nginx反向代理与缓存功能
  • 【黑马程序员】后端Web基础--Maven基础和基础知识
  • Linux系统Nginx服务(三)
  • 新手向 算法 基数排序-yang
  • 怎么搭建php网站网页设计个人网站设计
  • 小淇云库-Python 虚拟环境选择:venv、conda、poetry 的适用场景对比
  • 芋道源码 - RabbitMQ + WebSocket 实现分布式消息推送
  • Spring Data JPA 语法详解与使用案例
  • 网站开发面试题天津公司建设网站
  • 个人怎么做音乐网站网页设计与制作教程刘瑞新课后答案
  • noi-9月23日作业
  • 购物网站每个模块主要功能怎么免费搭建网站
  • 如何高效使用Xshell和finalshell连接服务器,简单高效
  • Nestjs框架: 策略的权限控制(ACL)与数据权限实战
  • mmap 虚拟地址映射
  • 网站做好第二年要多少钱wordpress添加文件2m
  • Linux编程笔记2-控制数组指针函数动态内存构造类型Makefile
  • 【数据结构】冒泡、选择、插入、希尔排序的实现