实在不敢相信,学校里现在教学用的编译器还是七八十年代的老古董,难道这东西更能培养从没接触过代码的学生深刻理解c语言的运行流程,不得不说像VisualStdio这样的重量级开发环境确实屏蔽了很多底层的运行流程,既然这样,我就勉为其难出一个绝版教程吧!

用C语言编写小程序时可以直接在开发环境中新建一个源文件,编译运行就OK了,而开发比较大型的项目时要用建立工程的方式来组织各种文件,一般包括源文件(.c)、头文件(.h)、资源文件(如:图片、音频、文本文件)。

为了养成良好的编程习惯,让程序文件结构清晰明了,我们首先新建一个工作目录,(不要老是把程序放在C:\BORLAND\BIN里面)那么这个工作目录应该放在哪里呢?当然是哪里都可以,只要你的开发环境Borland C知道在哪里就行,按照你们提供的开发工具,DISK_C文件夹是虚拟的C盘,因此工作目录只要在DISK_C文件夹内都可以,不论在哪里,包括子目录下,为了方便查看,我们直接在DISK_C的根目录下新建一个test的文件夹作为工作目录。

图1 开发工具

图2 新建工作目录

有了工作目录,我们就可以编写程序了,我们的程序最终是一个可调试的工程(Project),

打开Borland C(以后简称BC)

在操作之前我们要先设置几个目录,这样BC就能知道我们的工作目录在哪里。

首先修改工作空间,菜单File->Change dir….,将Directory Name改成我们前面的建立的工作目录,你的工作目录放在哪里,这里就填哪里,我们是放在Disk_C(是虚拟的C盘)的根目录下的,这里就改成C:\test,点击OK按钮保存。

这里还有一个问题,就是我们下次启动Borland C时,工作目录又会变回C:\BORLAND\BIN,为了避免每次启动都要重新配置工作目录,我们需要修改默认工作目录,配置文件是dosbox文件夹内的bc31.conf文件,用任一文本编辑器(如:记事本)打开,找到最后几行中,在cd \BORLANDC\BIN这一行前面添加#号注释掉,在下面添加一句cd \test,即你的工作目录,保存文件,重启Borland C,会发现工作目录一直是cd \test。

接下来,菜单Options->Directories,这里有四个编辑框,第一项是BC自带的包目录(编译环境自带的头文件(如:stdio.h)都放在这里面);第二项是BC自带的库目录,里面是一些自带的静态链接库文件。前面两项不懂事什么含义不要紧,只要设置成下面一样就行,(一般默认就是)。后面两项才是我们要具体设置的,第三项,Output Directory,是工程的输出目录,里面会存放工程编译和运行产生的文件(如.obj文件),原则上可以设置成Disk_C里面的任意一个目录,但是既然我们建立了一个工作目录,为了方便查看和管理,当然是设置在工作目录里,如果输出的文件很多,我们可以在工作目录test文件夹里面再新建一个文件夹作为输出目录,鉴于C课设的程序还不是太大,我们可以直接将输出文件目录设置在test文件夹。第四项是源代码目录,顾名思义就是告诉BC源代码存放的地方,同理我们可以在test文件夹里新建一个文件夹专门存放源文件,但是鉴于C课设的程序还是不够大,我们直接放在test文件夹内。

OK,保存。

终于我们可以开始建立工程了, 方法是先在开发环境中建立一个空工程,再添加源文件和头文件。

菜单Project->Open project

输入工程名,这里是test.PRJ,下图的下方蓝色区域我们看到这个文件会放在test工作目录下。OK保存。

工程建立好如上图,这个工程是一个空的工程,没有任何源文件,接下来我们就要编写源文件,有三种思路。

方法一:直接用BC的编辑器新建文件,再添加到工程

通过File->New,新建一个文件,输入源代码,保存,将文件名改成你要的名字。,如下面的test.cpp实现一个简单的加法。

这个文件是可以单独编译运行的,但是并没有添加到test工程中,这从上图中下方的Project:TEST 可以看出来,里面并没有包含任何文件,要想把这个文件添加到工程中,首先将光标定位到上图的下方区域,会出现一条绿色的线,接着菜单Project->Add item,找到要添加的文件,这里是test.cpp(我们可以一次性多编写多个源文件再一次性添加),Add添加到工程,Done完成本次操作。添加完成后我们会发现显示区下方的工程栏目的文件列表里出现了刚添加的文件表示添加成功。如果想移除已经添加的文件,可在Project->Delete item中操作。

我们可以再次编译运行,关于菜单中Compile和Build all的区别,前一项是编译当前文件,后一项是编译整个工程。

方法二:直接新建文件到工程

第一种方法新建的文件需要后来添加到工程,那么如何一开始就新建一个包含在工程的文件。

第一步,定位到显示区下方的工程栏目(工程栏目出现绿条),不定位到工程栏目,Project菜单项有些子菜单是不能选择的。

接着菜单Project->Add item,直接在Name编辑框输入文件名,点击Add添加,Done完成操作,可以一次性添加多个文件。如这里我添加了test1.cpp文件.

我们可以在显示区下方的文件列表里双击文件名来编辑文件。比如我们把主函数写在TEST.CPP中,来调用TEST1.CPP文件中加法运算函数,TEST1.CPP 文件中我们实现两个函数(加法和减法),并将函数声明放在头文件TEST1.H中。头文件可以用File->New来建立,只不过在保存时要将文件名改成TEST1.H(注意修改后缀),经过我测试头文件只需要放在工作目录下,不需要添加到工程,否则会报错重复定义,程序会自动搜索当前目录(工作目录或者和源代码同目录)。注意随时保存File->Save All。操作中我发现文件名大小写是无所谓的。

注意test1.h是自己定义的头文件,在程序中引用时要用双引号,表示在当前目录下。

Build all再Run可以出结果。或者直接Run

至此我们建立工程完成了一个小程序,我们可以打开我们的工作目录,会发现我们建立的文件、工程文件、输出文件都在里面。

方法三:使用第三方编辑器编写程序文件,再在BC中新建工程并添加文件。(推荐)

前面两种方法都是直接用BC自带的编辑器来编辑程序,我们都知道这个编辑器很鸡肋,文本编辑很麻烦,查找呀,替换呀,定位呀很麻烦。我们可以借助第三方的编辑器,最简单的如记事本,我推荐新手用Notepad++编辑器,这个编辑器是有中文版的,下载安装时默认就是中文,可以很方便的下载去用。

使用第三方编辑器,我们可以先把程序文件写好再保存或拷贝到工作目录下,比如我再添加两个程序文件test2.cpp(实现乘除算法)和test2.h(头文件)

保存到工作目录

打开BC软件

默认打开是上次退出前的工程,(如果没打开,就到Project菜单中打开)但是这里我们并看不出来,这时我们到菜单Window->Project.显示区下方就会显示工程栏。(这个操作记住,我们会经常用到)

此时工程中并没有test2.cpp文件,我们按照前面两种方法添加文件到工程的方法来添加就可以了。菜单Project->Add item,我们会发现BC自动列出了test2.cpp,我们把它添加进来就可以了。

修改test.cpp

编译运行出结果。

前面所有操作过程中我们都是把源文件和头文件直接放在工作目录根目录下的,而在实际大型项目开发过程中,往往把源文件统一放在工作目录下的一个子文件夹中,把头文件统一放在工作目录下的另一个子文件夹中。比如这里我们可以把所有源文件放在source文件夹里,把头文件放置在include文件夹里,

我们从头到尾再建一次工程

1.Project->Open Project

2.Project->Add item,我们要打开source文件夹将里面的源文件添加进来。

这个时候我们编译工程,会发现以下错误

上图提示找不到头文件test1.h和test2.h,那是当然的,因为我们并没有告诉BC我们把头文件放在了include文件夹,bc会默认在工作目录test文件夹的根目录下找这两个头文件,当然是找不到的,那么我们如何告诉BC头文件在哪里呢?有两种方法

第一种:修改源代码中预定义头文件的路径,以test.cpp为例,前面两个头文件是系统自带的不用修改,后面两个要想程序找到相应的头文件,改成下面的形式,这是什么意思呢,. /表示上一层目录的意思,“./include/test1.h”表示本源代码所在目录的上一层目录下的include文件夹里的test1.h,这样程序就能找到它了,同理修改test1.h和test2.h.

第二种:程序能找到stdio.h等自带的头文件,是因为BC将这些头文件所在的文件夹添加到了包含目录下,同样我们也可以将我们自己的头文件所在目录添加进来。

Options->Directories,在第一项后面用分号隔开添加头文件所在文件夹的目录。保存后再次编译运行程序就能成功。

程序中凡是涉及到路径的一定要弄清楚,因为程序是死的,你不告诉它,它就找不到,这种情况在读取文件时最常遇到,比如读取一个图片,要将图片相对于源文件的路径指定给相应代码。暂时写到这里

附件列表

Borland C++建立工程菜鸟教程的更多相关文章

  1. 【转载】Node.js 教程(菜鸟教程系列)

    很好的一篇教程:Node.js 教程 简单做下笔记 概述 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立 ...

  2. 《MFC游戏开发》笔记二 建立工程、调整窗口

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9300383 作者:七十一雾央 新浪微博:http:/ ...

  3. 用汇编语言(ARM 32位)编写TCP Bind Shell的菜鸟教程

    用汇编语言(ARM 32位)编写TCP Bind Shell的菜鸟教程 来源 https://www.4hou.com/info/news/9959.html Change 新闻 2018年1月19日 ...

  4. 学习笔记之C# 教程 | 菜鸟教程

    C# 教程 | 菜鸟教程 http://www.runoob.com/csharp/csharp-tutorial.html 菜鸟教程在线编辑器 http://www.runoob.com/try/r ...

  5. MongoDB基础教程[菜鸟教程整理]

    MongoDB基础教程 ======================================================================================== ...

  6. nodeJS菜鸟教程笔记

    http模块 var http = require('http'); // 引入http模块 var url = require('url'); // 引入url模块 var querystring ...

  7. MySQL教程 | 菜鸟教程

    装数据库失败后的重装步骤!!! --[创建数据库]CREATE DATABASE <数据库名>: --使用mysqladamin 创建数据库-- 使用普通用户,你可能需要特定的权限来创建或 ...

  8. 基于swiftadmin极速后台开发框架,我制作了菜鸟教程[专业版]

    由于互联网上基础编程教学的文档和视频教程已经有很多了,为什么还要建立菜鸟教程网, 这是因为基于我个人在十余年的自学编程的道路上.,我能深刻的体会到一名新手 在入门编程的时候,门槛在哪里,痛点在哪里?很 ...

  9. 菜鸟教程 Python100例 之实例29

    学习编程的路,走得好艰辛... 为了巩固基础知识,把菜鸟教程网上的实例拿来练习.. 在做到实例29时,看了网站给出的代码,觉得可以加强一下功能,不由得动了一下脑筋,如下: 原文题目: 题目:给一个不多 ...

随机推荐

  1. BZOJ3505 [Cqoi2014]数三角形

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  2. a版本冲刺第九天

    队名:Aruba   队员: 黄辉昌 李陈辉 林炳锋 鄢继仁 张秀锋 章  鼎 学号 昨天完成的任务 今天做的任务 明天要做的任务 困难点 体会 408 着手编辑测试文档,了解测试工具 编写测试用例集 ...

  3. SDWebImage使用及原理

    第一步,下载SDWebImage,导入工程.github托管地址https://github.com/rs/SDWebImage 第二步,在需要的地方导入头文件 1 #import "UII ...

  4. 【整理】Word OpenXML常用标签

    一.背景 最近在做关于Word内容自动标引,需要了解Word的底层结构,顺便梳理一下OpenXML的标签含义,方便后续开发,提高对OpenXML标签的查找效率,也是一个熟悉的过程. 二.内容 < ...

  5. backup mysql

    #!/bin/bashcd /home/Licw/backup_openDBNow=$(date +"%m-%d-%Y--%H:%M:%S")#echo $NowFile=$Now ...

  6. 简单的c# TCP通讯(TcpListener)

      简单的c# TCP通讯(TcpListener) C# 的TCP Socket (同步方式) C# 的TCP Socket (异步方式) C# 的tcp Socket设置自定义超时时间 C# TC ...

  7. maven install Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.1.1:war (default-war) on project web_nanchang

    maven打包成war时,报错:Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.1.1:war (default- ...

  8. C# 读取excel日期时获取到数字转换成日期

    string strDate= DateTime.FromOADate(Convert.ToInt32(data[i][7])).ToString("d"); strDate= D ...

  9. 诸城模拟赛 dvd的逆序对

    [题目描述] dvd是一个爱序列的孩子. 他对序列的热爱以至于他每天都在和序列度过 但是有一个问题他却一直没能解决 给你n,k求1~n有多少排列有恰好k个逆序对 [输入格式] 一行两个整数n,k [输 ...

  10. PHP realpath() 函数

    定义和用法 realpath() 函数返回绝对路径. 该函数删除所有符号连接(比如 '/./', '/../' 以及多余的 '/'),返回绝对路径名. 若失败,则返回 false.比如说文件不存在的话 ...