标题:[经验]C语言开发平台的搭建
取消只看楼主
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
结帖率:100%
 问题点数:0 回复次数:7 
[经验]C语言开发平台的搭建

刚学编程的总想哪天自己写个软件出来,我也是,不过学完一本c语言教材后发现自己还是写不出什么象样的东西来,原因就是标准c提供的函数库功能有限,要写出有实用价值的程序你必须使用对应平台下的函数库,比如你的程序在DOS中运行你可以用TC提供的库和dos系统调用,比如dos.h;你要在windows中运行,你要学会调用api这个windows系统提供的函数库;你要在linux中运行,你要学会使用qt或GTK+这些图形库和linux的api。


先跑下题说一下用tc的,你没有用tc就跳过这段看下段。你应该不会想以后去DOS环境中工作吧,你又没有DOS系统用,你让windows给你的tc和tc编译的程序虚拟一个dos出来,你以为你的程序在调用DOS系统接口(dos.h中的函数),你以为你的程序在调用中断(int86),其实你在自欺欺人,你的程序运行在windows之上虚拟出的一个DOS中所以接触不到真实的硬件,可以理解为虚拟机吧,早点醒过来吧,在turboc2这个目录上按shift+Del键彻底删除吧。

这里先纠正一些人的错误看法,有人以为c只能写黑屏幕字符模式程序,还有人以为这个黑窗口就是DOS,其实在windows中有一类程序叫console application,你用vc或Dev-C++写的控制台程序就是这种黑窗口的console application,不过和tc的有本质区别,这里的是32位windows程序,而tc编译的是16位dos程序,需要windows虚拟一个dos才可以运行,速度慢还浪费系统资源,鄙视一下。所以在盗版windows已经普及的年代c语言初学者应该用vc或Dev-C++写简单的console application,如一个hello world程序,不要用我们的老师做学生时学的dos下的tc。此处引用我以前回帖的一段:如果有人还在用8086跑DOS或Windows3.x,使用TC编程,你应该是世界上最可怜的人了,因为你过着上世纪90年代中期以前的生活。我现在用来做玩具的凌阳的单片机都是16位的,明年就玩32位的ARM单片机了,现在的PC是AMD3200+跑WINXP SP2和Ubuntu6.06LTS,编译器是VS2003.NET和GCC4.0,和用TC的有10年以上差距了(从WIN95以前到07年)。


一。我想这里大多数人正用着windows系统吧,那就说windows下开发平台的搭建:

1.vc系列IDE:vc6.0,vs2003.net,vs2005.net是现在用的较多的windows编译环境,和windows系统一样都是微软开发的,可以说是windows下最好的IDE,没有比他们更强大的了,我就用vs2003.net写c和c++程序,还做过一些简单的网页。不过功能越强大体积也就越大,vc装好了有500m吧,我的vs2003.net带着2G多的msdn就更大的了(不装msdn也应该比vc6.0大吧)。这几个IDE中vc6.0最为小巧,使用也最简单,用来开发c程序绰绰有余了。优点是vc的调试功能是相当出色的,缺点是体积大下载和安装不方便。


2.Dev-C++:这是GCC移植到windows下的最好的IDE,最新版的安装程序也只有9M,虽然体积小,写windows下的c程序也没有问题,不得不说的是这是一个开源的软件,所以很多人为她开发了很多开发库,比如一些2D,3D的图形库,特别适合喜欢图形编程的c语言爱好者,再说现在游戏开发是软件行业的三大热门之一。另一个优点是为以后转移到linux平台打基础,这里可以学到一些linxu编程的知识。缺点就是IDE中集成的调试器没有VC的强大,命令行工具gdb很多人还是不习惯。


基于Dev-C++的开发平台搭建
我今天中午写了一个Dev-C++中allegro安装的教程,大家可以去这里看看:
http://bbs.bc-cn.net/viewthread.php?tid=163686&extra=&page=10#288070
这里有Dev-C++的安装方法,还有allegro的安装方法,安装DirectX,OpenGL等其他的Dev-C++开发库和安装allegro一样,如果你选择了Dev-C++就一定要把这里的安装学会,工欲善其事必先利其器,自己的工作平台一定要了如指掌。

二。最后提一下linux下c开发环境的搭建:没有Bill.Gates的东西我们依然可以生活的很好,在linux中其实装一个gcc就够了,直接用vi编辑代码,再装emacs也行,IDE可以选择kdevelop,不过有人说IDE可能会把初学者教傻。

就写这么多吧,还有些问题以后再讨论。
---------------------------------------------------------------------------------------------
毕竟自己见识有限,上面说的有错误或不足,欢迎指出,我会立即改正并致谢。

搜索更多相关主题的帖子: C语言 windows 平台 经验 函数库 
2007-08-18 20:25
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 

楼上的意思好象是 vc和dev-cpp用起来复杂不适合初学者,首先我要说tc内核的不适合初学者,可以看这个帖子有原因的:http://bbs.bc-cn.net/viewthread.php?tid=163571


现在我来说下vc的用法:
1.最简单的:"文件"-->"新建",弹出窗口后在最上面的选项卡中选"文件",然后选中"c++源文件",在"文件"下面写上要建立的文件名,如hello.c(不带扩展名默认为c++的文件.cpp),在"位置"中设置要保存的位置,然后就可以开始写程序了,写好后按F7编译(build),第一次编译会弹出两个窗口都点确定就行了,ctrl+f5执行,简单吧.

如果你的vc和我的一样都是英文的,对应的就是"file"-->"new",选项卡中选"files",然后选中"c++ source file",在"file"下面写上要建立的文件名,在"Location"中设置要保存的位置.

2.正规的创建方法:"文件"-->"新建",弹出窗口后在最上面的选项卡中选"工程",然后选中"win32控制台程序",在右边设置工程名字和位置,后边全部下一步或完成,工程就建立起来了,然后就是向工程中添加文件了:"工程"-->"添加到工程"-->"新建".
英文的是这样:::"file"-->"new",弹出窗口后在最上面的选项卡中选"projects",然后选中"win32 console application",在右边设置工程名字和位置,后边全部下一步或完成,工程就建立起来了,然后就是向工程中添加文件了:"project"-->"add to project"-->"new".

现在我来说下dev-cpp的用法:
你还是先把你的界面设置为中文吧,我省点力气,E文改中文的方法是:"tools"-->"Environment Options",选"interface"选项后在"Language"的下拉菜单中选"chinese",注意不要选成"chinese(tw)",然后点ok立马换中文.
1.最简单的:"文件"-->"新建"-->"源代码",一步操作就是ctrl+N,然后就可以写程序了,写好后ctrl+f9编译,ctrl+f10执行.
2.正规的创建方法:"文件"-->"新建"-->"工程",点一下console application的图标,在下边写工程的名称,选语言(c还是c++),确定之后选择位置,再确定之后工程就出来了,下面就是往工程中添加文件了,可以是"文件"-->"新建"-->"源代码",弹出窗口问你是否加入工程,点yes;还可以是"工程"-->"新建单元".写好后ctrl+f9编译,ctrl+f10执行.

[此贴子已经被作者于2007-8-18 21:32:46编辑过]

2007-08-18 20:36
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 
6楼的coachard, 我想说的是你被TC毒害的够深的了,你的思想还是操作硬件,DOS时代.

windows系统不允许应用程序对底层硬件进行编程操作,原因有两个:
1.硬件操作由程序员负责势必会加重程序员的负担,太贴近硬件的程序移植性也不好,硬件这部分给操作系统负责是应用程序开发更加简单.
2.程序员直接控制硬件一旦出现错误可能让操作系统都崩溃,是人就会犯错.以前的win95,win98和dos一样允许直接控制硬件所以那时的windows经常蓝屏.win2000是一个伟大的操作系统,是windows系列的一次革命,安全性和稳定性都有了很大进步,这时候硬件已经不由程序员负责了,都是OS的事了.你现在用的XP也很少蓝屏吧.

现代操作系统中如果你不写设备驱动,硬件就不是你担心的问题,操作系统为我们提供了统一的接口,要干什么去调用操作系统,她为你服务.
2007-08-18 22:08
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 
11楼是电子科大的吧,或许你不屑于仔细看我的帖子和其中的链接,你非要觉得wintc好也行啊,每个人有决定自己的权利,我只是给出自己的经验大家参考一下.至于cfree和dev-cpp一样使用gcc内核,不过作者把开源的东西拿来卖钱我很不喜欢,所以这里没有提到.

回14楼:
c现在做嵌入式用的多. linux中c开发应用程序反而比c++多.

底层不一定要去操作硬件,你可以深入操作系统也算底层,现在的操作系统很复杂够你学的了.想驱动硬件可以写设备驱动程序.

学单片机就是在裸机上写程序,没有操作系统(这里不说嵌入式),你直接控制cpu的引脚输出高电平还是底电平,够底层吧.
2007-08-18 22:55
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 
回20楼:

1。我也觉得vc过于庞大,不过vc庞大的原因是因为包含了许多太多的功能,比喻说一些函数库,类库,还有还多做软件需要的东西。 你说写出来的程序移植性不强,这我就不明白了,如果你写的代码符合c或c++的标准,即使你移植到linux/unix平台源代码依然可以用。如果你的程序使用windows的API就只能在windows平台使用。所以说移植性好不好是很多时候是由程序员决定的,请你搞清楚移植的意思。

2。说Dev-C++是老外开发的不习惯,难道vc,tc是中国人开发的吗?使用最新版的Dev-C++可以发现提供了包管理器Packman,使用他可以简单安装很多开源项目的开发库,如2d Graphics,3d Graphics,Allegro,DirectX,OpenGL,还有linux中的GTK。你的不习惯是因为Dev-C++不是对gcc的简单封装,他给了用户更多的控制权,不像c-free那种傻瓜式操作,很多方面和linux下的开发环境一致,所以习惯windows的人不习惯这种风格,比如用户可以设置编译连接参数,编辑makefile控制整个工程的编译过程。

3. c-free是中国人做的不错,不过只是做了个壳子,有技术含量的东西都是用的国外的,如编译器,函数库。c-free最早用的是gcc内核,GNU组织开发出gcc后免费发放,c-free作者做了个壳子就向使用者收费,我是鄙视这种程序员的。而且我也没有发现c-free在哪里开放源代码,如果说收费只是人品问题,不给用户源代码就是法律责任了。使用GPL下发行的gcc后c-free必须遵守GPL,但是我是在网上和软件中没有找到源代码信息。如果我有钱,时间和精力,完全可以起诉c-free作者侵害了GPL赋予我的权利。

4.最新版的Dev-C++可以发现提供了包管理器,使用了就可以发现这是很强大的,去Dev-C++的开源项目主页http://devpaks.org/可以下载很多的开发库,用这些库可以搭建强大的开发环境。c-free在这方面是不能和Dev-C++相提并论的。
2007-08-21 13:43
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 
GPL不仅规定了源码,还包括了软件。GPL有这么一条规定:修改或发放GPL许可的程序构成对GPL许可证的接受。

MinGW不是编译器,只是一个在windows中模拟linux环境的软件,有了它gcc等GNU工具才可以在windows中运行。
下面是资料:
MinGW(Minimalist GNU for Windows),又称Mingw32,是将GNU开发工具移植到Win32平台下的产物,包括一系列头文件、库和可执行文件。 实际上 MinGW 并不是一个 C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC (GNU 编译器集合) 以外,MinGW 还包含有一些其他的 GNU 程序开发工具 (比如 gawk bison 等等)。

可以认为MinGW是一个虚拟机,安装后linux的程序就可以在windows下运行。c-free是给MinGW中运行的程序加了一个IDE的壳子。

安装c-free是不是会附带安装GCC等GUN的GPL许可程序?c-free是包含GCC出售,不是调用用户自己安装的gcc。如果用户自己安装了gcc,c-free去调用当然没有问题,可实际情况是c-free的安装程序包含了GCC,所以说c-free的作者在发放GPL许可的程序GCC。你调用windows的API函数和你给别人装windows系统是不一样的。



2007-08-22 13:55
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 
我不想继续和你讨论这个问题了,因为已经脱离了我发的主题贴的意图了。

你可以继续喜欢你的cfree ,我在windows中还是用devcpp和visual stdio ,开源软件提倡的是自由,每个人都可以做自己喜欢的事。
2007-08-23 11:45
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 
neverTheSame如果你对C标准语法掌握的够好,对C已经很熟悉了,你用什么编译器可以随自己喜好。
但是对于初学者,他们学习的是C的语法,所以需要一个对语法检查严格的编译器,从自己的第一个C程序开始培养写规范代码的习惯。看下面的这个C程序:

main()
{
printf(\"hello world\n\");
}

这个程序用TC编译是不是不会报错?可是这个程序符合C99标准吗?用Dev-cpp编译会明确的指出错误。
现在学习C是不是应该学习最新的C标准? 你要是见有人学古典的K&R C连C89都不知道你怎么想?同样我看别人写这种C89都不提倡不被C99支持的代码我也会认为是误入歧途了。

只说这一个例子,更多你可以看http://bbs.bc-cn.net/viewthread.php?tid=163571
2007-09-13 13:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-163755-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.164877 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved