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

编程技能:多文件编译

专栏导航

上一篇:Windows编程:在VS2019里面,调整代码字体大小

回到目录

下一篇:Visual Studio 技能:调整软件界面布局

本节前言

在之前的讲解中,我们讲解了,用 Visual Studio 来建立 C/C++ 解决方案,编译和运行程序的方法。

本节课程,需要以之前的课节作为先修课程。

所以呢,请大家首先学会以下的文章链接所示的课节。

参考课节:使用 VS2010 编写 C语言程序

参考课节:用 VS2019 编写C语言程序

在你学会了以上两节的基础上,我们来进行本节的讲解,多文件编译。

关于多文件编译,我想,可能,有的人学过,有的人没学过。为了统一进度,我们在这里,再来讲一讲。

一来,是统一教学进度。二来,也是让大家了解一下,如何在 Visual Studio 里面,进行 C/C++ 的多文件编译。

一.    代码文件

本次的多文件编译,所涉及的代码文件,分别为 main.c,calcu01.c,calcu02.c,my_head.h 。

它们各自的代码如下。

(一)main.c

#include <stdio.h>
#include "my_head.h"int main()
{int x, y;int res01, res02;x = 10;y = 20;res01 = calcu01(x, y);res02 = calcu02(x, y);printf("res01 = %d,  res02 = %d\n", res01, res02);return 0;
}

(二)calcu01.c

int calcu01(int a, int b)
{int res;res = a + b;return res;
}

(三)calcu02.c

int calcu02(int a, int b)
{int res;res = a * b;return res;
}

(四)my_head.h

#ifndef _MY_HEAD_H_
#define _MY_HEAD_H_extern int calcu01(int a, int b);
extern int calcu02(int a, int b);#endif

这样一来,代码就准备好了。

二.    建立 C 语言解决方案

这一点,其实我们在前言中的参考课节里面,已经是讲过了。在这里,我们还是再来讲一遍。

本节,我们以 VS2019 为例,来进行演示。至于 VS2010,你可以自己去琢磨着,不难。

请大家打开 VS2019,来到如下界面。

图1

在图1 的红色框线所示的位置,是【创建新项目】选项,点击它,结果如下。

图2

假定,你是跟着我们的教程来学习的。那么,在你的界面的左侧,在如图2 的【创建新项目】字样下面的模板列表里面,肯定会有红色框线所示的【Windows 桌面向导】一项,如果没有的话,请你自己在图2 右边的红色框线所示的搜索框里面,输入【桌面向导】,则搜索框下方的模板列表列表里面,也肯定会出现【Windows 桌面向导】一项。

找到了【Windows 桌面向导】这一模板选项之后,点击选中它,然后点击界面右下角的【下一步】按钮。这个下一步按钮,我在截图里没有展示。在你那里,肯定是能够看到的。点击了【下一步】按钮以后,结果如下图所示。

图3

如图3 所示,两个红色框线里面,在上面的红色框中输入【Multi_File】,结果如下图所示。

图4

在你输入了【Multi_File】以后,在图4 所示的界面里,【项目名称】栏与【解决方案名称】两栏都会变为【Multi_File】字样。也就是,我们将解决方案与项目的名字,都设置为【Multi_File】了。

接下来,我们需要设置解决方案的保存路径。也就是,设置【位置】参数。我们点击右边的红色框线所示的三点按钮,结果如下图所示。

图5

在图5 所示的【浏览】对话框里面,我们浏览到桌面位置,然后点击对话框右下角的【选择文件夹】按钮,过程如下所示。

图6
图7

如图7 所示,位置参数的值,已经是变为桌面路径了。

然后呢,我们点击图7 所示的界面的右下角的创建按钮,结果如下。

图8

在图8 里面,上方的红色框线,可以用来选择应用程序的类型。点击【应用程序类型】下方的下拉列表框右边的向下三角号,会出现一个列表。列表中,我们通常会用到的,是【控制台应用程序】和【桌面应用程序】两项,如下图所示。

图9

然而,本次,我们要创建的,是控制台应用程序。所以呢,在图8 里面,上方的红色框线的位置,我们保持默认的选择:控制台应用程序。在图8 的下方的红色框线的位置,它是一个复选框。我们将其勾选上。设置好了的结果如下图所示。

图10

接下来呢,我们点击图10 的右下角的【确定】按钮。结果如下。

图11

图11 是 VS2019 的软件主界面。

到了这里,建立 C/C++ 解决方案的步骤,我们就完成了。

三.    添加代码文件

在本节,根据第一分节的内容,我们需要添加三个源文件,它们分别是 main.c,calcu01.c 和 calcu02.c 。我们也需要添加一个头文件,my_head.h 。

(一)添加源文件 main.c

找到【解决方案资源管理器】界面,如下图所示。

图12

将鼠标指针移动到【源文件】的位置,然后点击鼠标右键,在弹出的右键菜单中,依次点选【添加】,【新建项】,过程如下图所示。

图13
图14

我们想要添加的是源文件 main.c,它是一个 C 语言文件。在 Visual Studio 里面,没有专门的 C 语言文件这一选项,不过,在图14 里面,倒是有【C++ 文件】这一项。单击图14 的上方的红色框线所示的【C++ 文件】这一选项。

然后呢,在图14 的下方的红色框线所在的位置,输入本次要添加的源文件的名字,【main.c】,如下图所示。

图15

然后呢,我们点击图15 的右下角的【添加】按钮。结果如下图所示。

图16

软件界面中,出现了图16 所示的区域,它是一个代码编辑界面,选项卡的名字【main.c】显示了,此时我们所编辑的文件,正是【main.c】文件。

对于【main.c】,请大家将本篇文章第一分节中的【main.c】中的代码,复制到图16 所示的代码编辑界面里,然后按 Ctrl+S 快捷键保存,如下图所示。

图17

(二)添加源文件 calcu01.c 和 calcu02.c

有了 main.c 的操作步骤以后,请大家仿照这个操作步骤,来添加 calcu01.c 和 calcu02.c

两个源文件。结果如下面的几个图所示。

图18
图19
图20

(三)添加头文件 my_head.h

在【解决方案资源管理器】界面里,请大家将鼠标指针移动到【头文件】的位置,然后点击鼠标右键,在弹出的右键菜单里,依次点选【添加】,【新建项】。过程如下图所示。

图21
图22

在图22 所示的界面里,我们需要单击选择上方的红色框线所示的【头文件】选项,因为我们本次是想要添加一个头文件。

然后呢,在下方的红色框线所示的文本框里面,我们输入【my_head.h】,结果如下图所示。

图23

然后呢,我们来点击图 23 所示的界面的右下角的【添加】按钮,结果如下图所示。

图24

图24 里面,橙色显示的选项卡的名字为【my_head.h】,表示当前正在编辑的是【my_head.h】代码文件。

接下来,请大家将第一分节中的【my_head.h】中的文件内容复制到图24 所示的代码编辑区域里面,然后按下 Ctrl+S 快捷键保存文件。结果如下面两个图所示。

图25
图26

到了这里,该添加的文件,我们就添加完了。

四.    编译

依次点选【生成】,【生成解决方案】·菜单命令,过程如下图所示。

图27
图28

在图28 里面,我们的编译情况是,成功1个,无错误。

五.    运行

依次点选【调试】,【开始执行(不调试)】菜单命令,过程如下图所示。

图29
图30

运行正常。接下来,请大家自行关闭图30 所示的控制台窗口。

六.    总结

我们之所以讲解多文件编译,那是因为,在今后的 Windows 程序设计知识的学习中,我们经常会遇到多文件编译的情形。很多时候,所涉及的代码文件,都不止一个。不但如此,我们还有可能会遇到说,所涉及的文件,既包括代码文件,也包括资源文件的情况,甚至会包括 mp3 文件,wav 声音文件,jpg 和 png 等等格式的图片文件,等等。

本节,主要是为了让大家了解多文件编译的操作流程。至于代码,我相信,你很容易看懂本节的代码的。

结束语

本节内容,我认为是不难的。你觉得呢?

专栏导航

上一篇:Windows编程:在VS2019里面,调整代码字体大小

回到目录

下一篇:​​​​​​​Visual Studio 技能:调整软件界面布局

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

相关文章:

  • 本地 LLM API Python 项目分步指南
  • 20250715给荣品RD-RK3588开发板刷Android14时打开USB鼠标
  • Android 获取 UserAgent (UA) 的三种方式深度解析:差异、风险与最佳实践
  • Hystrix与Resilience4j在微服务熔断降级中的应用对比与实战
  • 用 K-means 算法实现水果分堆
  • 《大数据技术原理与应用》实验报告四 MapReduce初级编程实践
  • 多网卡环境下访问跨网段设备的排查与配置指南
  • iOS高级开发工程师面试——关于网络
  • Python:消息队列(RabbitMQ)应用开发实践
  • 【C#地图显示教程:实现鼠标绘制图形操作】
  • 开通保存图片权限
  • 如何设计实现开发自助重启工具-01-设计篇
  • eVTOL分布式电推进(DEP)适航审定探究
  • Ajax接收java后端传递的json对象包含长整型被截断导致丢失精度的解决方案
  • 【橘子分布式】Thrift RPC(编程篇)
  • 亚矩阵云手机:破解 Yandex 广告平台多账号风控难题的利器
  • Redis学习系列之——高并发应用的缓存问题(二)
  • JDK1.8函数式编程实战(附日常工作案例,仅此一篇耐心看完彻底搞懂)
  • 17、鸿蒙Harmony Next开发:状态管理(组件拥有的状态和应用拥有的状态)
  • Vue获取上传Excel文件内容并展示在表格中
  • 【人工智能99问】神经网络的工作原理是什么?(4/99)
  • 使用Pydantic开发时,如何将返回数据由snake_case自动转为camel case
  • Mac IDEA启动报错:Error occurred during initialization of VM
  • Linux操作系统从入门到实战(九)Linux开发工具(中)自动化构建-make/Makefile知识讲解
  • ubuntu部署kvm
  • AI-Compass LLM训练框架生态:整合ms-swift、Unsloth、Megatron-LM等核心框架,涵盖全参数/PEFT训练与分布式优化
  • 正则表达式深度解析:从LeetCode 3136题说起
  • 028_分布式部署架构
  • OpenCV图像自动缩放(Autoscaling)函数autoscaling()
  • 2025.7.15总结