《c++程序调试实用手册》

转自:http://www.cnblogs.com/dongzhiquan/archive/2009/08/30/1994745.html

开篇十个问题

  • 问题1       作为一个c/c++程序员,你的所有子程序代码都封装在函数体内,你知道还有其他类型的子程序否(与c/c++不同,许多语言还有另外一种类型的子程序成为过程)?
  • 问题2       你是否知道过程子程序和函数子程序之间的所有区别?
  • 问题3       你是否学习过如何解析一个表达式,考虑到操作符的优先级?
  • 问题4       你是否知道属于先行EOF(look-ahead EOF)和非先行EOF(non-look-ahead)的含义?
  • 问题5       你是否知道预读(priming read)语句的含义
  • 问题6       你是否知道标记循环指的是什么?
  • 问题7       你是否知道 static(静态)键字在内层,外层以及作为一个(数据或方法)类成员的作用是什么?
  • 问题8       你是否知道编译器在翻译一个其方法体正式地定义在拥有其类内部的方法和翻译一个其方法体定义在拥有其类之外的方法时的区别?
  • 问题9       你是否知道什么时候sizeof()函数报告(明显)错误的值及其原因是什么?
  • 问题10     你是否知道递归算法指的是什么 (关于递归的定义请详见递归<grin>)?
  • 1. c/c++软件工程师对于头文件中的定义全部采用大写,对于源文件(.c/.cpp)中的声明全部采用大小写混合使用的方式.唯一例外的是函数原型,类定义及STL语法
  • 2. 匈牙利命名法通过在每一个标识符名字前面防止一个数据类型助记符,为程序员提供了对标识符类型的即时识别
  • 3. Microsoft使用的一般前缀命名规范:

            前缀                  类型

            C                      类或结构体

            m_                    成员变量

            ch                     char,TCHAR

            b                      BOOL

            n                      UNIT

            w                     WORD(16位无符号整形)

            l                       LONG(32为有符号整形)

            dw                   DWORD(32位无符号整形)

            p                     *

            lp                     FAR*(远指针)

            lpsz                  LPSTR(32位字符串指针)

            lpsz                  LPCSTR(32位常量字符串指针)

            lpsz                  LPCTSTR(如果_UNICODE定义,为32位常量字符串指针)

            h                      handle(Windows对象句柄)

            lpfn                  callback(指向CALLBACK函数的远指针)

MFC、句柄、控件及结构的命名规范

 

Windows类型

样本变量

MFC类

样本变量

HWND

hWnd;

CWnd*

pWnd;

HDLG

hDlg;

CDialog*

pDlg;

HDC

hDC;

CDC*

pDC;

HGDIOBJ

hGdiObj;

CGdiObject*

pGdiObj;

HPEN

hPen;

CPen*

pPen;

HBRUSH

hBrush;

CBrush*

pBrush;

HFONT

hFont;

CFont*

pFont;

HBITMAP

hBitmap;

CBitmap*

pBitmap;

HPALETTE

hPaltte;

CPalette*

pPalette;

HRGN

hRgn;

CRgn*

pRgn;

HMENU

hMenu;

CMenu*

pMenu;

HWND

hCtl;

CState*

pState;

HWND

hCtl;

CButton*

pButton;

HWND

hCtl;

CEdit*

pEdit;

HWND

hCtl;

CListBox*

pListBox;

HWND

hCtl;

CComboBox*

pComboBox;

HWND

hCtl;

CScrollBar*

pScrollBar;

HSZ

hszStr;

CString

pStr;

POINT

pt;

CPoint

pt;

SIZE

size;

CSize

size;

RECT

rect;

CRect

rect;

一般前缀命名规范

 

前缀

类型

实例

C

类或结构

CDocument,CPrintInfo

m_

成员变量

m_pDoc,

变量命名规范

 

前缀

类型

描述

实例

ch

char

8位字符

chGrade

ch

TCHAR

如果_UNICODE定义,则为16位字符

chName

b

BOOL

布尔值

bEnable

n

int

整型(其大小依赖于操作系统)

nLength

n

UINT

无符号值(其大小依赖于操作系统)

nHeight

w

WORD

16位无符号值

wPos

l

LONG

32位有符号整型

lOffset

dw

DWORD

32位无符号整型

dwRange

p

*

指针

pDoc

lp

FAR*

远指针

lpszName

lpsz

LPSTR

32位字符串指针

lpszName

lpsz

LPCSTR

32位常量字符串指针

lpszName

lpsz

LPCTSTR

如果_UNICODE定义,则为32位常量字符串指针

lpszName

h

handle

Windows对象句柄

hWnd

lpfn

callback

指向CALLBACK函数的远指针

?

应用程序符号命名规范

 

前缀

符号类型

实例

范围

IDR_

不同类型的多个资源共享标识

IDR_MAIINFRAME

1~0x6FFF

IDD_

对话框资源

IDD_SPELL_CHECK

1~0x6FFF

HIDD_

对话框资源的Help上下文

HIDD_SPELL_CHECK

0x20001~0x26FF

IDB_

位图资源

IDB_COMPANY_LOGO

1~0x6FFF

IDC_

光标资源

IDC_PENCIL

1~0x6FFF

IDI_

图标资源

IDI_NOTEPAD

1~0x6FFF

ID_

来自菜单项或工具栏的命令

ID_TOOLS_SPELLING

0x8000~0xDFFF

HID_

命令Help上下文

HID_TOOLS_SPELLING

0x18000~0x1DFFF

IDP_

消息框提示

IDP_INVALID_PARTNO

8~0xDEEF

HIDP_

消息框Help上下文

HIDP_INVALID_PARTNO

0x30008~0x3DEFF

IDS_

串资源

IDS_COPYRIGHT

1~0x7EEF

IDC_

对话框内的控件

IDC_RECALC

8~0xDEEF

Microsoft MFC宏命名规范

 

名称

类型

_AFXDLL

唯一的动态连接库(Dynamic Link Library,DLL)版本

_ALPHA

仅编译DEC Alpha处理器

_DEBUG

包括诊断的调试版本

_MBCS

编译多字节字符集

_UNICODE

在一个应用程序中打开Unicode

AFXAPI

MFC提供的函数

CALLBACK

通过指针回调的函数

库标识符命名法

 

标识符

值和含义

u

ANSI(N)或Unicode(U)

d

调试或发行:D = 调试;忽略标识符为发行。

静态库版本命名规范

 

描述

NAFXCWD.LIB

调试版本:MFC静态连接库

NAFXCW.LIB

发行版本:MFC静态连接库

UAFXCWD.LIB

调试版本:具有Unicode支持的MFC静态连接库

UAFXCW.LIB

发行版本:具有Unicode支持的MFC静态连接库

动态连接库命名规范

 

名称

类型

_AFXDLL

唯一的动态连接库(DLL)版本

WINAPI

Windows所提供的函数

Windows.h中新的命名规范

 

类型

定义描述

WINAPI

使用在API声明中的FAR PASCAL位置,如果正在编写一个具有导出API人口点的DLL,则可以在自己的API中使用该类型

CALLBACK

使用在应用程序回叫例程,如窗口和对话框过程中的FAR PASCAL的位置

LPCSTR

与LPSTR相同,只是LPCSTR用于只读串指针,其定义类似(const char FAR*)

UINT

可移植的无符号整型类型,其大小由主机环境决定(对于Windows NT和Windows 9x为32位);它是unsigned int的同义词

LRESULT

窗口程序返回值的类型

LPARAM

声明lParam所使用的类型,lParam是窗口程序的第四个参数

WPARAM

声明wParam所使用的类型,wParam是窗口程序的第三个参数

LPVOID

一般指针类型,与(void *)相同,可以用来代替

Edit and Continue不能处理的代码修改类型

    更新资源文件.
    修改只读文件中的代码.
    修改使用/O1,O2,Og,Ox,/Ob1或/Ob2优化过的代码.
    修改异常处理块.
    修改数据类型,包括类,结构,联合或枚举的定义.
    田间新数据类型.
    删除函数或修改函数原型.
    更新从另一台机器赋值而来并且未在本地建立的可执行程序.

调试版本和发行版本

    Microsoft 将应用程序定义为与符号调试信息,或与调试库一起建立的程序的一个版本.其中包括了诊断帮助,并执行各种即成检查,以帮助调试一个程序.
    Microsoft 将发行版本定义为程序的一个编译版本,其中不包括在调试模式中建立编译时所包含的调试和诊断特性.

产生映射文件(Mapfile)

   Generate Mapfile选项

   映射文件实际上是一个文本文件,其中包含了关于正在连接的程序的如下信息:

  • 该文件的模块名称
  • 该程序投文件的时间戳
  • 程序组列表,每个组一segment:offset(段:偏移量)形式的其实地址,以及长度,组名和类构成.
  • 公共符号列表,各地址均以segment:offset形式给出,包括符号的名字,浮动地址及定义符号的.obj文件.
  • segment:offset形式的模块入口地址.

  A   mapfile   is   a   text   file   (它是个文本格式的文件,你可以用notepad等打开)that   contains   the   following   information   about   the   program   being   linked:

  • The   module   name,   which   is   the   base   name   of   the   file    
  • The   timestamp   from   the   program   file   header   (not   from   the   file   system)    
  • A   list   of   groups   in   the   program,   with   each   group's   start   address   (as   section:offset),   length,   group   name,   and   class    
  • A   list   of   public   symbols,   with   each   address   (as   section:offset),   symbol   name,   flat   address,   and   .obj   file   where   the   symbol   is   defined    
  • The   entry   point   (as   section:offset)    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "C builder 10 开发手册" 是一本关于 C++ Builder 10 的开发指南。C++ Builder 是一个集成式开发环境,用于创建 Windows 程序和动态链接库。这本手册旨在为开发人员提供有关 C++ Builder 10 的全面指导。 手册首先介绍了 C++ Builder 10 的特点和功能,包括图形用户界面的设计和构建、数据访问、多媒体和网络编程等方面。它还解释了如何安装和设置开发环境,以及如何开始一个新的项目。此外,手册还包含了有关开发工具和调试器的详细信息,帮助开发人员更好地理解和调试他们的代码。 手册还讨论了各种常见的开发任务,例如窗体和控件的创建、事件处理程序的编写和使用各种内置组件的方法。此外,手册还介绍了高级主题,如多线程编程、异常处理和数据库连接等。 手册提供了大量的示例代码和说明,以帮助开发人员更好地理解和运用所学知识。此外,手册还提供了一些实用的技巧和技巧,帮助开发人员提高他们的开发效率和代码质量。 总而言之,"C++ Builder 10 开发手册" 是一本对于 C++ Builder 10 开发者来说不可或缺的指南。它提供了全面而详细的知识,帮助开发人员更好地掌握 C++ Builder 10 的开发技能,并将其应用于他们的项目中。无论是初学者还是有经验的开发人员,都可以从这本手册中获益,并提升他们的开发能力。 ### 回答2: C Builder 10开发手册是为了帮助开发者在C Builder 10开发环境下进行应用程序开发而提供的指南。该手册包括了C Builder 10的各个方面的内容,以帮助开发者快速入门并掌握开发技巧。 手册首先介绍了C Builder 10的基础知识,包括安装和配置开发环境、界面概述以及常用的开发工具和命令等。开发者可以通过这些内容了解到C Builder 10的整体结构和基本操作,为后续的开发工作打下基础。 接下来,手册详细介绍了C Builder 10的各种组件和控件,以及它们的使用方法和属性设置。开发者可以通过这些内容了解到如何使用不同的组件来构建应用程序的用户界面,并灵活地操作和定制各个控件的属性和行为。 此外,手册还介绍了C Builder 10的事件和消息处理机制,以及常用的编程技巧和设计模式。开发者可以通过学习这些内容,掌握如何编写响应用户操作的事件处理程序,并了解到如何更好地组织和管理代码,提高应用程序的开发效率和维护性。 最后,手册还提供了一些实例和案例分析,展示了如何在C Builder 10中实现一些常见的功能和任务。开发者可以通过学习这些实例,进一步巩固理论知识,并掌握如何将所学的知识应用到实际开发中。 总之,C Builder 10开发手册是一本详尽而实用的指南,为开发者提供了系统学习C Builder 10的资料。通过仔细阅读和实践,开发者可以掌握C Builder 10的核心概念和技巧,从而能够更加高效地进行应用程序开发。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值