C++软件开发总纲

一、什么是C/C++语言
        C/C++语言是编译工具的文本解析规则。我们根据这个规则写好代码文件后,使用编译工具来解析编译它就可以生成一个由二进制码组成的可执行程序。系统运行程序后就可以根据我们的指令来一步步控制各种硬件工作,完成我们需要的功能。这里的重点就是编译工具。在不同的操作系统下,编译工具的名称一般是不一样的。一个平台下的编译工具生成的文件一般是不可以给另一个平台使用的。windows操作系统下一般是安装visual studio软件后使用其自带的编译工具,编译工具名称是vc开头,后面的数字是版本号,比如vc14。不同的linux操作系统下一般编译工具名称都是gcc、g++。名称虽然相同,但是一般情况下这些编译工具是不兼容的。比如ubuntu操作系统下的gcc生成的文件是不能用在Debian操作系统下的。而嵌入式linux操作系统的编译工具名称都会带有一个前缀,比如arm-linux-。所以我们在开发的过程中要时刻知道自己的编译工具是什么。
二、C/C++软件开发流程
        <1-确定需求>:比如开发一个图片播放器为例,该软件功能是可以打开任意格式的图片进行预览。
        <2- 选择硬件>:主板、cpu、内存、硬盘、显示器、鼠标、键盘。一个笔记本电脑足够使用。
        <3-选择操作系统>:比如windows 64位操作系统、ubuntu 64位操作系统、Mac操作系统等。这里不介绍操作系统的安装,后面会单独进行讨论。
        <4-选择编译工具>:windows 64位操作系统安装visual studio 2019,其自带的编译工具是vc14,可支持Win32、X64两种平台下开发。ubuntu 64位操作系统使用自带的gcc/g++,支持ubuntu64位平台下开发。
        <5-写代码进行库封装>:首先要学会C语言和C++语言,除了语法规则外,最重要的一个概念就是库封装。一般我们自己写的代码是要封装成一个库来供其他模块调用的。当然我们自己的代码通常也是需要调用别的库来实现的。编译工具会提供一份头文件和库,比如C编译工具提供<stdio.h>和libc库,C++编译工具提供<iostream>和libc++库。我们只要包含它的头文件,就可以调用它提供的函数了。操作系统也会提供一份头文件和库,比如我们要开发多线程、网络相关的功能就需要使用操作系统提供的库。不同的操作系统提供的头文件是不一样的,所以我们要针对不同的平台来写代码。当我们要调用别人封装好的库时,优先选择支持多平台的库,这种库所有的平台提供的头文件是一致的,这样我们基于它的头文件写一份代码就可以适用于多个平台了。需要注意的是,当我们给别人提供支持多平台的库时,最好也保证头文件提供一份,不同平台只要提供对应的库就可以。开发图片播放器,基本功能就是读取一张图片,然后将图片解码,最后显示在显示器上。目前有很多开源库都可以做到,我们这里可以选择比较出名的一个开源库:Qt。我们直接包含Qt的头文件,然后使用对应的函数加载图片、界面显示图片就可以。这里不讨论具体实现,只是讨论开发流程。最后强调一下,写代码的话掌握一个很好的代码编辑工具也是一门必修的技术。
        <6-编译代码生成库>:当我们写好代码后,需要使用编译工具编译成库,这里不讨论编译命令如何写,后面会单独讨论。编译库时编译工具需要找到每个源文件依赖的头文件,我们只需要告诉编译工具头文件的路径就可以了。编译工具、操作系统提供的头文件一般都是编译工具自动在默认的路径里去找的,这里只要告诉Qt的头文件路径即可。
        <7-写主函数调用库来启动功能>:一般是写一个main.c或者main.cpp文件,内容比较简单,包含需要的库的头文件,然后调用对应的函数启用功能就可以了。
        <8-编译主函数并且链接库生成可执行程序>:这一步我们要告诉编译工具main文件所依赖的头文件路径,以及要链接的库路径及库文件名称。编译工具、操作系统提供的头文件路径、库路径、库名称一般是不需要指定的,这些东西编译工具会自动去默认的路径里去找。如果main依赖了Qt头文件,则这里要指定Qt头文件路径。而且最后链接需要指定Qt的库路径、以及依赖的库名称。最后即可生成可执行程序。具体命令后面单独讨论,这里只注重描述流程。
        <9-运行程序>:这一步的重点是如果可执行程序依赖了动态库,那么操作系统运行的时候必须要找到对应的动态库才能执行程序。操作系统运行程序时,都会有自己默认的动态库寻找路径,并且可能有多个默认路径。操作系统在一个路径下找到对应的动态库后就不会继续往下找了。一个可执行程序一般都会依赖编译工具、操作系统的一些动态库,只不过这些动态库的都在操作系统的默认寻找路径下,不需要我们去指定了。如果我们的程序依赖了Qt的动态库,那么就要告诉操作系统Qt的动态库路径是什么,或者我们直接把Qt的动态库拷贝到操作系统默认寻找动态库的路径下也是可以的。
        <10-测试功能>: 测试功能是否可以正常使用。
        <11-Bug修复>:功能如果不正常,则需要修改代码解决问题。
        <12-程序发布>:发布的程序一般需要打包成一个安装包,内容包含我们的可执行程序、依赖的动态库、配置文件等。
三、总结
        本文主要从原理上讲解了C/C++软件开发的流程,具体编译工具如何编译代码生成静态库或者动态库以及可执行程序,我们后面会进行详细的技术讨论。而且一般开发软件都是使用自动化编译工具来完成的,比如windows下使用visual studio,linux下使用 make。当然这些自动化编译工具都是根据我们上面讲的原理来实现的。图片播放器因为有开源库的加持,并没有涉及到比较难懂的技术知识。后面我们开发的过程中,会设计到各方面各行业的专业知识,只有了解了这些知识,才能开发出对应的功能软件。所以我们后面讨论的内容分两大模块,一个就是技术学习,一个是项目开发。技术学习就是单独研究某一项技术,范围不限。项目开发就是实现一个可实用的软件。当然技术学习是项目开发的前提。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值