首页/新闻资讯/正文详情

C++一个函数如何调用其他.cpp文件中的函数

发布时间:2026/11/3 19:33:24 来源:云帆数科 栏目:资讯中心
C++一个函数如何调用其他.cpp文件中的函数
一个函数调用其他.cpp文件中的函数使用VC或VS创建C项目的时候会自动产生许多文件夹其中有一个文件夹-源文件在该文件下可以自定义许多.cpp文件但是需要注意的是这里面的各个文件只能有一个文件中含有main()函数而且各个文件中不能使用相同的函数名进行定义那么要那么多文件放在项目中有什么用呢当然这里C是提供一个文件调用其他文件中函数的功能的这就可以让我们自定义一个只包含main()函数的文件通过在该函数中调用其他文件中的函数就可以将各个文件链接起来而且更重要的一点就是通过调用其他,cpp文件中的函数的时候如果调用的某函数又调用了它自己文件中的一个函数那么只用调用“父级函数”就可以实现间接调用~~~看示例首先是资源管理窗口功能主函数.cpp12345678910111213141516171819202122232425262728293031323334// C上机作业.cpp : 定义控制台应用程序的入口点。//0-9: 48-57#include stdafx.husingnamespacestd;externvoidgotoxy(shortx,shorty);externvoidsort_by_name();externintStrtoint();intmain(){system(title 功能主函数);gotoxy(23, 2); cout 功能列表;gotoxy(15, 3); cout 1:字符串转换为数值类型;gotoxy(15, 4); cout 2:对中文字符进行排序;gotoxy(0, 10);intchoice 0;cout 请输入您要执行的功能;cin choice;getchar();//吸收回车switch(choice){case1:Strtoint();break;case2:sort_by_name();break;default:cout 选择失败感谢使用再见 endl endl;}return0;}stdafx.hstdandard application framework extensions123456789101112131415161718// stdafx.h : 标准系统包含文件的包含文件// 或是经常使用但不常更改的// 特定于项目的包含文件//#pragma once#include targetver.h#include stdio.h#include tchar.h#include iostream#include Windows.h#include string //注意这里的string与cstring中的使用差别在定义与使用cout输出string类型字符串的时候最好使用string库否则可能会出现乱码以及错误等一系列错误// TODO: 在此处引用程序需要的其他头文件gotoxy().cpp123456789#include stdafx.husingnamespacestd;voidgotoxy(shortx,shorty){COORD pos { x,y };HANDLEhOut GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(hOut, pos);}对中文字符的排序.cpp1234567891011121314151617181920212223242526//对中文字符串进行排序时默认是按照第一个字符的第一个拼音的顺序进行排序#include stdafx.husingnamespacestd;voidsort_by_name(){string s[4] {一号,二号,三号,四号}, t;for(inti 0; i4; i){for(intj i; j4; j){if(s[i]s[j]){t s[i];s[i] s[j];s[j] t;}}}for(inti 0; i 4; i){cout s[i] endl;}cout 功能运行结束 endl endl;}字符串转换为数值型.cpp1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768#include stdafx.husingnamespacestd;intStrtoint_0(constcharstr[])//字符串数字转换为整形{inti 0, j 0;longlongnumber1 0;//定义一个长整形变量用来存储转换后得到的值intnumber[50] { 0 };//定义一个数组用来存储转换后得到的值intsymbol 1;//符号常量0为负1为正(默认为正)while(str[i] !\0)//测试输出判断是否正确{while(str[i] ){i;}if((str[i] || str[i] -)){i;if(str[i] -){symbol 0;}}elseif(str[i]9 str[i]0){number[j] str[i] - 48;//存储数据,j// cout number[j - 1] endl;i;}if(str[i]9|| str[i]0)//停止输出规则判断语句{break;}}cout 数的位数为 j endl;//j到这里就已经得到数组的最大索引值1了intx 1;for(intk j - 1; k 0; k--, x x * 10){number1 number[k] * x;}if(symbol 0){number1 number1*(-1);}cout 转换后的数为 number1 endl endl;return1;}intStrtoint()//调用字符转换函数确保变量不在主函数中定义{chararr[50] { 0 };inti 0;charc;cout Please input the string : endl;while((c getchar()) !\n){arr[i] c;//注意这里下面的i就开始了}/*while ((c cin.get()) ! \n) //另一种控制输入的方法{arr[i] c;cout arr[i - 1];}*/Strtoint_0(arr);return0;}在主文件cpp中调用其他文件函数的方法直接用和我们的数据成员必须加extern不同的是你只需把待调用函数的声明写在其头文件中然后在主函数中直接用就可以1234567891011121314151617181920212223//test.h#ifndef TEST_H //注意这里千万不要写成TEST.H必须用下划线用点不行#define TEST_Hvoidprint();#endif//test.cpp#includeiostream#includetest.husingnamespacestd;voidprint() {cout test函数被调用 endl;}//main.cpp#includeiostream#includetest.husingnamespacestd;intmain() {print();}extern方法使用extern的时候你甚至不需要在main.cpp文件中加上引用文件的声明直接就可以用。123456#includeiostreamusingnamespacestd;externvoidprint();intmain() {print();}但是这样写其实作用不大在一些大的工程中反而不如以好用。

相关推荐

空间智能终端正在从单点设备走向系统协同,行业竞争逻辑已经变了
空间智能终端正在从单点设备走向系统协同,行业竞争逻辑已经变了

过去几年,空间智能终端的竞争集中在硬件本身:摄像头像素、门锁识别速度、面板响应时间、传感器精度。但当一个项目从几百台设备扩展到几万台,从单一住宅延伸到公寓、酒店、商业、园区多业态共存时,真正的瓶颈不再是某个终端够不够… · 2026/11/3 19:32:24

05 - 端口与实时画面(训练 / 评估)
05 - 端口与实时画面(训练 / 评估)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 19:32:24

web打印插件四选一:从浏览器打印到可视化模板设计器
web打印插件四选一:从浏览器打印到可视化模板设计器

后台系统做到一定阶段,打印一定会变成最脏的活。 业务最初说"能打印就行",上线三个月后需求变成:表头要在每页重复、这张单要套打、批量打 200 张、不要弹框、能不能让业务自己改模板。等你把这些都补上,代码里已经堆了… · 2026/11/3 19:32:24

支付系统核心架构设计与实践指南
支付系统核心架构设计与实践指南

1. 支付核心系统设计概述 支付系统作为现代商业基础设施的核心组件,其设计质量直接影响着企业的资金流转效率和用户体验。一套优秀的支付核心系统应当具备高可用性、强一致性、可扩展性和安全性等关键特性。在实际项目中,我们通常会面临交易峰值波动、资… · 2026/11/3 20:13:46

医疗大数据预测分析:核心技术架构与应用实践
医疗大数据预测分析:核心技术架构与应用实践

1. 医疗保健领域的大数据预测分析概述医疗行业正经历着从经验医学向精准医学的转型,而大数据预测分析正是这一变革的核心驱动力。我在三甲医院信息化建设项目中亲历了这种转变——过去医生主要依靠个人经验和有限的临床数据做决策,现在则能够整合患者全生… · 2026/11/3 20:13:46

支付核心系统架构设计与关键技术实现
支付核心系统架构设计与关键技术实现

1. 支付核心系统设计概述支付系统作为现代商业的基础设施,其重要性不言而喻。一套设计良好的支付核心系统能够支撑日均千万级交易,保证资金安全流转,同时为业务创新提供坚实基础。我在金融科技领域深耕多年,参与过多个大型支付系统… · 2026/11/3 20:13:46

GPU加速大数据可视化:技术原理与性能优化实践
GPU加速大数据可视化:技术原理与性能优化实践

1. 大数据可视化与GPU渲染的黄金组合大数据可视化正面临着一个关键瓶颈:当数据量突破千万级甚至亿级时,传统CPU渲染方式开始力不从心。我曾参与一个智慧城市交通流量分析项目,当尝试在网页端渲染全市出租车GPS热力图时,Chrome浏览… · 2026/11/3 20:13:46

编程基础:分支与循环语句的核心原理与应用
编程基础:分支与循环语句的核心原理与应用

1. 分支与循环语句基础解析在编程世界中,分支与循环语句就像交通信号灯和环形公路,控制着程序执行的流向和重复。作为程序逻辑的骨架结构,它们几乎出现在所有编程语言中,构成了算法实现的基础工具集。分支语句(条件语句… · 2026/11/3 20:13:46

Tableau Server彻底卸载指南与残留清理技巧
Tableau Server彻底卸载指南与残留清理技巧

1. 问题背景:为什么Tableau Server卸载会不干净?Tableau Server作为企业级商业智能平台,其安装过程会深度集成到系统环境中。不同于普通桌面软件,它的卸载残留问题主要源于三个层面:服务组件复杂性:默认安装… · 2026/11/3 20:12:46

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码