DevCpp的一些使用技巧

 DevCpp是目前市面上我所知道的编译器中本人比较中意的一款编译器,主要在于它对标准C++的比较全面的支持以及相对简洁、方便的界面功能设置。 当然,由于目前尚处于开发阶段,其中仍存在一些在设计上不尽人意的地方使得在使用中有时会遇到一些不必要的麻烦。本人对Dev的使用也只是处于起步阶段,不过在不长的使用过程中,前面所说的“麻烦”倒是遇到了几个(不知道是Dev的问题还是本人人品的问题:),在"麻烦"的解决过程中,总结出了几条使用技巧,在此与使用Dev的各位同道共勉:

麻烦一:DevCpp的调试问题
表现:
刚开始使用Dev的同道可能都会遇到这样的问题,在Dev中当我写完一个程序,打算对其进行调试的时候(即点击工具栏上图标是对勾的项,或用快捷键F8)会跳出这样一个对话框,上边的提示信息是"Your project does not have debug information, do you want enable debugging and rebuild your project?"点选Yes后,编译器会将源文件再次编译一遍,但是当再次进行调试时,上边的对话框又一次出现了。
解决方法:
1)在Dev的文件管理窗口(也就是代码编辑窗口左边的那个窗口)中,选择project选项页。在此选项页中,找到你要调试的“工程”,注意这里强调的是工程,而不是某个单独的源文件,如果你没有建立工程的习惯,建议你现在开始培养。在找到的工程上点击右键并在弹出菜单中选择Project Options一项(或快捷键Alt+P),将会跳出用于设置工程选项的Project Options对话框。在此对话框中选择Compiler选项页,将Linker一栏中Generate debugging information项的No改为Yes。
2)经过上边所说的设置后,大部分情况下都可以正常调试了。但建议采取一种更加稳妥的方法:
仍然是在Project Options对话框中,选择Parameters选项页,点击Add Library or Object按钮,在弹出的对话框中按以下路径--你DevCpp的安装目录/lib/debug/libstdc++.a--打开libstdc++.a文件,进行完此项操作后,在Linker文本框中会添加上刚才所提到的路径(你DevCpp的安装目录/lib/debug/libstdc++.a),点击OK。经过此项操作之后,重新编译一遍工程,就可以正常调试了。
上述所说的两种可以分别采用其中的一种,也可以同时采用。其实,在采用第2种方法对编译器进行设置,并重新编译工程之后,编译器会自动将Generate  debugging information一项设置为Yes。
这里,我要说一些题外话,对于Dev的调试功能,我确实不敢恭维。建议使用Dev的大侠们,还是有空多多练习一下静态调试的功夫吧。

麻烦二:在进行Win32程序设计时,对资源文件--.rc--文件的编译问题
表现:
看下边这段程序:
//resource.h
#define IDR_MYMENU                      101
#define IDD_TOOLBAR                     101
#define IDC_PRESS                       1000
#define IDC_OTHER                       1001
#define ID_FILE_EXIT                    40001
#define ID_DIALOG_SHOW                  40002
#define ID_DIALOG_HIDE                  40003

//dlg_two.rc
#include "resource.h"

IDR_MYMENU MENU DISCARDABLE
BEGIN
    POPUP "&File"
    BEGIN
        MENUITEM "E&xit", ID_FILE_EXIT
    END
    POPUP "&Dialog"
    BEGIN
        MENUITEM "&Show", ID_DIALOG_SHOW
        MENUITEM "&Hide", ID_DIALOG_HIDE
    END
END

IDD_TOOLBAR DIALOGEX 0, 0, 98, 52
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
EXSTYLE WS_EX_TOOLWINDOW
CAPTION "My Dialog Toolbar"
FONT 8, "MS Sans Serif"
BEGIN
    PUSHBUTTON      "&Press This Button",IDC_PRESS,7,7,84,14
    PUSHBUTTON      "&Or This One",IDC_OTHER,7,31,84,14
END
这是一段Win32程序中的两个文件,其中dlg_two.rc就是该程序的资源文件,主要描述了两个资源:一个菜单和一个对话框.对以上文件进行编译时(当然,这里还缺少一个.c文件)编译器会报错,错误提示只是简单的[Resource error]synax error.
解决方法:
其实对该问题的解决很简单。熟悉VC++编程的人应该知道,VC++在自动生成资源文件时,会同时#include一个"afxres.h"文件,此文件是MFC中的一个头文件.对于Dev这种不支持MFC的编译器,我们需要手工#include进一个名为"winresrc.h"的文件,该文件的作用与"afxres.h"的作用大同小异,当在.rc文件中引入前边所说的文件之后,再进行编译就不会报错了。
另外,当直接将VC++的资源文件拷贝到Dev中编译时,如果资源中存在静态控件(更直白一些就是,如果资源文件中有IDC_STATIC字符串)则需要在此之前加上#define IDC_STATIC -1的宏定义。主要原因在于在VC++中默认IDC_STATIC的值为-1,而在Dev中则没有此项定义,需要手工添加。


前边讲了不少Dev的“坏话”,其实Dev在使用中除了开头说的对标准的支持以外,还有挺多令人赏心悦目的功能的。鄙人不才,在使用过程中,也发现了几个,在此与诸君共赏。

功能一:在Dev中使用自己的库函数。
打开DevCpp->File->New->选择Project 在跳出的对话框中选择Static Library并填写你要存放的路径->点OK
将你想定义的库函数的.h和.c文件加入工程比如:
//Add.h
#ifndef _ADD_H_
#define _ADD_H_

int Add(int a, int b);
#endif

//Add.c
#include "Add.h"

int Add(int a, int b)
{
 return a + b;
}
注意:在.c文件中没有main函数!
编译、链接后,编译器会生成你自己的库函数文件.a文件(比如Add.a)。下面,使用该文件。
新建一个工程,比如AddTest.dev,按照前面叙述的过程打开Project Options对话框,选择parameters选项页。在Linker文本框中加上前边生成的Add.a文件的路径。(最好是把Add.h文件和Add.a文件都拷贝到当前文件夹中)现在开始使用自己的库函数了。编辑以下文件:
//AddTest.c
#include "Add.h"
#include <stdio.h>
#include <stdlib.h>

void main()
{
 printf("%d/n",Add(2,3));
 system("pause");
}
编译、链接运行后会发现程序会正确的打印出结果5

功能二:给所有的程序加上漂亮的贴图
仍然打开Project Option对话框,在默认的General选项页中,有Icon选项。点击browse按钮,选择合适的.ico文件并打开。现在再编译一下文件,你会发现即使是控制台程序也有属于自己图标了。

OK,到此,我基本上"技穷"了。也许,在某些专业人士眼中,以上的“技巧”只能够称为“小把戏”,但当你熟悉了这些“小把戏”并在实际应用中受益或又发现新的“小把戏”的时候,你肯定会乐在其中。至少,我是这样的。
希望这里面有能够让你眼前一亮的东西:)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值