轻松实现Visual C++源代码规范整理

轻松实现Visual C++源代码规范整理 

 

 
[文章信息]
作者:张玉珊
时间:2005-02-28
出处:天极网
责任编辑:方舟

 

 如果你是一名VC程序员,你是否被一个问题所困扰?项目小组有编程规范要求严格执行,但是项目进度紧张,每天都有大量的代码需要完成。很难做到既能保证开发进度,又能编写出良好风格、缩进规范的代码。如果采用其他工具对源文件进行代码整理,又需在VC之外重新打开源代码,整理结果不能直接在VC中查看编译。能不能在VC中集成一种工具,轻松点击VC按钮即可整理源码呢?回答是有。

  下面我就介绍一个名为astyle的开源代码整理工具以及在VC开发环境中集成配置的方法。可以迅速实现在VC中进行代码整理的功能,希望能给你一定的帮助。

  1、 访问http://sourceforge.net/projects/astyle,下载astyle包,包括源文件、可执行文件、使用说明等。

                 也可以从http://liugee.googlepages.com/astyle_1.15.3_win32.rar下载

  2、 拷贝astyle.exe到c:/winnt/system32下。

  3、 接下来配置VC,添加astyle代码整理功能。

  1) 在VC中新建菜单项"格式整理"。在工具栏上点击右键打开Customize窗口,在Tools标签页新建一个菜单项:"格式整理",并在Command中输入菜单项对应外挂工具程序当前所在路径:"C:/winnt/system32/astyle.exe"。


  2) 在Arguments中输入外挂工具程序配置参数--style=ansi $(FileName)$(FileExt)。其中 --style=ansi表示选择使用ANSI 风格格式和缩进。当然也可选用其他风格,可选的风格和样例如下:

  --style=ansi:ANSI 风格格式和缩进

namespace foospace
{
 int Foo()
 {
  if (isBar)
  {
   bar();
   return 1;
  }
  else
   return 0;
 }
}

  --style=kr :Kernighan&Ritchie 风格格式和缩进

namespace foospace {
 int Foo() {
  if (isBar) {
   bar();
   return 1;
  } else
   return 0;
 }
}

  --style=linux :Linux 风格格式和缩进

namespace foospace
{
 int Foo()
 {
  if (isBar) {
   bar();
   return 1;
  } else 
   return 0;
 }
}

  --style=gnu :GNU 风格格式和缩进

namespace foospace
{
 int Foo()
 {
  if (isBar)
  {
   bar();
   return 1;
  }
  else
   return 0;
 }
}

  --style=java :Java 风格格式和缩进

class foospace {
 int Foo() {
  if (isBar) {
   bar();
   return 1;
  } else
   return 0;
 }
}

  更详细的配置参数可参加见astyle随机文档。

  ${FileName}${FileExt}:表示整理当前编辑的源文件。

  在Initial directory中输入$(FileDir)参数:表示初始运行路径。设置该项值后,astyle启动的初始路径为当前文件路径。


  3) 为使在astyle.exe整理代码时不弹出Dos框并将运行结果直接显示到VC中,需选中"Use Output Window"选项,如图所示。


  4) 为方便astyle工具的使用,还可以将该菜单项添加到便捷工具栏中。同样也是在Tools下面的Customize中进行设置,设置时注意工具图标编号,如图所示:


  5)至此设置工作基本完成,还有一点注意事项需要说明。因为astyle对代码进行整理时整理的对象是硬盘中的源文件,如果未对源文件进行保存就直接进行代码整理的话,VC会弹出源文件重新载入提示框,如果选择是,则会丢掉刚刚开发的代码,这无疑是程序员最痛苦的事;选择否又会使整理操作白费了。所以为保证开发代码及时得到保存,需在整理前保存修改源文件。要实现该功能,只需在Tools中的option设置中,将Save options设为:"Save before running tools",如图所示:


  好,大功告成,代码整理只需轻轻松松点击VC工具栏按钮,立即在VC编辑框中出现规范的源代码。

  下面让我们来享受一下使用VC集成astyle整理代码的愉快结果吧!

  1、整理前,凌乱的代码行:


  2、整理后的代码行:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1,cccode.zip一个监控别人计算机的程序(65KB)2,cihcn.zipCIH病毒1.4版本之中文注释(25KB)3,regmonsrc.zip监控win9x下文件的读写(251KB)4,quickprt.zip增强的quickrpt(70KB)5,xxm.zip餐桌管理程序(83KB)6,dfbak.zip电费管理程序(981KB)7,pterm01b.zip终端仿真程序(63KB)8,drivevie.zip查看系统安装的驱动器(34KB)9,findprocess.zip列举所有的进程基类(107KB)10,mfctlist.zip列举操作系统中所有的进程,你能够在程序中消灭进程。程序由Visual C++ 5.0开发,工作于Windows 95(98),Windows NT 4.0(28KB)11,CServer.ZIP多线程实现客户-服务器结构的一个例子(37KB)12,splasher.zip用线程实现软件的片头(Splash Screen)(62KB)13,getinfo.zip获取系统硬件信息源代码(39KB)14,getfontinfo.zip获取系统所有字体信息源代码(51KB)15,detectos.zip获取操作系统版本信息源代码(42KB)16,gethostip.zip获得主机名和IP地址(34KB)17,shellext.zip用程序启动IE Outlook Explore(30KB)18,autolog.zipWinNT 自动登录源程序(13KB)19,cpuinfo.zip一个取得 CPU 信息的程序源码(164KB)20,apihook.zipAPI钩子APIHOOK 2.0 源代码(91KB)21,registry.zip查询修改注册表源代码(40KB)22,q1.zip程序创建两个线程,第一个线程没有消息队列,主线程尝试给第一个线程发送一个消息,我们可以看到PostThreadMessage()返回FALSE,程序创建的第二个线程有一个消息队列,主线程中的PostThreadMessage()返回TRUE,程序由Visual C++ 6.0开发,没有用到MFC(79KB)23,pstat.zip在程序需要进行较长时间工作的时候,总希望能有一个进度条告诉我们当前的进度,这个例子利用线程显示进度条值得一看 COOL(20KB)24,m4kit15.zip简单的环境继承(persistence)库(548KB)25,vxdlib11.zip自动生成虚拟设备驱动(VXD)的C++代码的一个库 COOL!(431KB)26,hklm.zipCHKLM类允许你在注册表的HKEY_LOCAL_MACHINE注册键中做写操作(10KB)27,pipe_pro.zip管道类(30KB)28,Storage.zip存储类(9KB)29,dt220.zip日期和时间的扩展类2.2版,需要安装(1149KB)30,dt221.zip日期和时间的扩展类2.2版的更新程序(22KB)31,DllIco.zip得到DLL/EXE文件中的资源定义 Cool(85KB)32,stealth.zip这个由Visual C++ 5.0开发的SDI程序演示如何让程序运行时在Window 95或Windows NT 4.0的任务条上不显示出来,程序重载了CMainFrame中的PreCreateWindow()函数 COOL(29KB)33,FontsTest.zip列举系统中的所有字体(41KB)34,memmap.zip操作内存映像文件,提供的CMemMapFile功能强大(16KB)35,cfile64.zip支持Win32 64位文件系统的一个类
如果读者需要使用光盘中的源代码,请将相关目录及其包含的内容复制到您的硬盘上,并修改对应的硬盘目录属性——取消目录及其所包含子目录和文件的“只读”属性。否则,打开VC项目时由于无法进行文件的“写”操作,会导致提示出错信息。 下面是对光盘中主要实例的简要说明: 实例2-1:演示C++程序的运行步骤。源代码在光盘中“\02\firstcpp”目录下。 实例2-2:Visual C++语言基本元素介绍。源代码在光盘中“\02\secondcpp”目录下。 实例2-3:cout流控制符setw的使用。源代码在光盘中“\02\thirdcpp”目录下。 实例2-4:增加域内填充字符。源代码在光盘中“\02\fourthcpp”目录下。 实例2-5:同一数据用不同进制输出结果。源代码在光盘中“\02\fifthcpp”目录下。 实例2-6:用浮点数的形式输出数据。源代码在光盘中“\02\sixthcpp”目录下。 实例2-7:数据的输入及输出。源代码在光盘中“\02\seventhcpp”目录下。 实例2-8:计算学生平均成绩。源代码在光盘中“\02\eighthcpp”目录下。 实例2-9:函数的调用。源代码在光盘中“\02\ninthcpp”目录下。 实例2-10:用指针传递参数。源代码在光盘中“\02\tenthcpp”目录下。 实例2-11:全局变量和局部变量。源代码在光盘中“\02\eleventhcpp”目录下。 实例2-12:使用指针注意内存的分配。源代码在光盘中“\02\twelfthcpp”目录下。 实例2-13:引用实例。源代码在光盘中“\02\thirteencpp”目录下。 实例2-14:虚函数的使用实例。源代码在光盘中“\02\fourteencpp”目录下。 实例3-1:利用向导生成的应用程序框架实例。源代码在光盘中“\03\test”目录下。 实例4-1:文档的存取。源代码在光盘中“\04\CDocument”目录下。 实例4-2:简单的文本编辑器。源代码在光盘中“\04\CEditView”目录下。 实例5-1:菜单实例。源代码在光盘中“\05\test1”目录下。 实例5-2:图片浏览器。源代码在光盘中“\05\picture”目录下。 实例5-3:工具栏资源编辑器。源代码在光盘中“\05\prop”目录下。 实例5-4:工具条的编程技术。源代码在光盘中“\05\record”目录下。 实例5-5:给状态栏添加时间窗格。源代码在光盘中“\05\pane”目录下。 实例6-1:创建模态对话框。源代码在光盘中“\06\dialog_1”目录下。 实例6-2:创建非模态对话框。源代码在光盘中“\06\dialog_2”目录下。 实例6-3:通用对话框展示。源代码在光盘中“\06\dialog_3”目录下。 实例6-4:创建一般属性页对话框。源代码在光盘中“\06\dialog_4”目录下。 实例6-5:创建向导对话框。源代码在光盘中“\06\dialog_5”目录下。 实例7-1:标准控件实例。源代码在光盘中“\07\CtrlTest”目录下。 实例8-1:区域探测实例。源代码在光盘中“\08\finding”目录下。 实例8-2:键盘字符的输入与显示。源代码在光盘中“\08\keyboard”目录下。 实例9-1:字体展示。源代码在光盘中“\09\text”目录下。 实例9-2:文字动画。源代码在光盘中“\09\characters”目录下。 实例9-3:画刷使用实例。源代码在光盘中“\09\Color”目录下。 实例10-1:打印实例。源代码在光盘中“\10\print”目录下。 实例11-1:存取SDI程序文档实例。源代码在光盘中“\11\SerialSDI”目录下。 实例11-2:文件操作实例。源代码在光盘中“\11\FileManipulate”目录下。 实例12-1:使用用户界面线程实例。源代码在光盘中“\12\InterfaceThread”目录下。 实例12-2:使用工作者线程实例。源代码在光盘中“\12\ControlThread”目录下。 实例12-3:多线程实例。源代码在光盘中“\12\WQDemo”目录下。 实例12-4:线程间的通信。源代码在光盘中“\12\ThreadCommu”目录下。 实例13-1:动态链接库(Dll)实例。源代码在光盘中“\13\dlltest ”目录下。 实例13-2:鼠标钩子应用实例。源代码在光盘中“\13\MouseHook”目录下。 实例13-3:键盘钩子应用实例。源代码在光盘中“\13\KeyboardHook”目录下。 实例14-1:WinSock网络程序:聊天室。源代码在光盘中“\14\WinSocketChat”目录下。 实例14-2:利用MSComm控件进行串口数据传输。源代码在光盘中“\14\MSComm”目录下。 实例14-3:简单的WinInet应用程序。源代码在光盘中“\14\SimpleNet”目录下。 实例15-1:创建Access数据库。源代码在光盘的“\15\Info”中。 实例15-2:MFC的ODBC数据库实例。源代码在光盘中“\15\Enroll”目录下。 实例15-3:利用ADO查询并操作数据库实例。源代码在光盘中“\15\AdoTest”目录下。 FTP应用实例:FTP客户端程序,源代码在光盘目录“\16”下。 人事管理系统:源代码在光盘目录“\17”下。
1,01.zipCalling Stored Procedures调用存储过程(8KB)2,02.zipCreate Access data source name dynamically动态创建Access的数据源名(5KB)3,03.zipUsing DAO to read data sources other than MS Access使用DAO读MS Access以外的数据源(6KB)4,04.zipHow to use RecordSets without using the AppWizard at the creation of your project不用AppWizard如何使用RecordSets(11KB)5,05.zipDetermine if DAO Jet engine version 3.5 is installed检测DAO Jet引擎3.5版是否安装(5KB)6,06.zipClasses for direct SQL calls with ODBC在direct SQL类中调用ODBC(5KB)7,07.zipUsefull addons to CDaoTableDef关于CDaoTableDef的话题(4KB)8,08.zipThe Generic Recordset普通的数据集(Recordset)(5KB)09,09.zipPrint Mailing Labels打印邮件标签(8KB)10,10.zipRFX_Date alternative关于RFX_Date(4KB)11,11.zipRFX_Date using COleDateTime使用COleDateTime(6KB)12,12.zipSample Database Program Using Dialog Interface基于对话框的数据库编程(11KB)13,13.zipStoring "Paint Brush" images in a Access DB在Access DB中存储画笔图象(5KB)14,14.zipA class to call stored procedures that do not return records一个调用存储过程的类(6KB)15,15.zipTips: ODBC & Access databaseODBC和Access数据库的使用技巧(5KB)16,16.zipUsing DBGrid in unbound mode在unbound模式下使用DBGrid(6KB)17,ADORsWizard.zipADO Data Bound Class Wizard(39KB)18,ISQLADO.zipA tool that allows you to query OLE DB sources(612KB)19,oledb-1.zipADO seems to be the ideal way to expose tabular data from your own COM objects and the ATL OLE DB Provider templates can help! (41KB)20,oledb-2-1.zipThe ATL OLE DB Provider templates appear to rely on the fact that your data is kept in a simple array, but that's not really the case at all! (42KB)21,oledb-3.zipAdding bookmark functionality is relatively easy and it enables our ADO recordset to be used with a greater number of data bound controls. (52KB)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值