C C++ VC MFC 命名規範

來源:互聯網
上載者:User

 

 

2012,    C++ 王者歸來!

http://www.cnblogs.com/Lhw978/archive/2012/03/10/2389169.html

 

 

//****************************************************************************
//                       -----(C) Lhw978@163.com----
//文 件 名: C C++ VC MFC 命名規範.txt
//收集整理: Heavily (勁草...無香)
//郵    箱: Lhw978@163.com
//      QQ: 64616914
// C/C++群: 194134342
//日    期: 2012-03-07
//功    能: C C++ VC MFC 命名規範
//著作權聲明: 本規範完全自由,可在尊重作者著作權的前提下,用於各種合法用途。
//          最終解釋權歸屬作者本人。
//備    注: 本規範由網上公開的零散規範收集整理而成,並加以適當修改。
//          歡迎各位同行的指正、補充、交流。
//****************************************************************************

本命名取自“匈牙利”法,僅供參考。
資料類型的命名規則參考:
定義類型:

首碼 類型                    類型描述            樣本                   占位元組(Win32) 有效值                 取值範圍
-------------------------------------------------------------------------------------
typedef int BOOL             VC++自訂BOOL      BOOL           bFlag            4    (TRUE/FALSE)           非0|0
b    Boolena-布爾            1Bit的標誌          bool           bFlag            1    (true/false)           (0x0 ~0x1)
-------------------------------------------------------------------------------------
typedef unsigned char  BYTE;                     BYTE           byValue;         1    0   ~255               (0x0 ~0xFF)
by   Byte 位元組               無符號的8bit位元組    unsigned char  uchValue;        1    0   ~255               (0x0 ~0xFF)
ch   Char 字元               有符號的8bit位元組    signed   char  chValue;         1    -128~127               (0x80~0x7F)
-------------------------------------------------------------------------------------
typedef unsigned SHORT WORD;                     WORD           wValue;          2    0     ~65535           (0x0   ~0xFFFF)
w    不帶符號的Word字        無符號的16bit整數   unsigned short usValue;         2    0     ~65535           (0x0   ~0xFFFF)
s    帶符號的16位整型數      有符號的16bit整數   signed   short sValue;          2    -32768~32767           (0x8000~0x7FFF)
-------------------------------------------------------------------------------------
typedef unsigned int   DWORD;                    DWORD          dwValue;         4    0          ~4294967295  (0x0       ~0xFFFFFFFF)
dw   不帶符號的doubleword字  無符號的32bit整數   unsigned int   unValue;         4    0          ~4294967295  (0x0       ~0xFFFFFFFF)
n    帶符號的32位整型數      有符號的32bit整數   signed   int   nValue;          4    -2147483648~2147483647  (0x80000000~0x7FFFFFFF)
l    帶符號的長整型數                            long           lValue;         4/8
ll   帶符號的擴充長整型數                        long long      llValue;         8
-------------------------------------------------------------------------------------
f    單精確度浮點數            單精確度浮點數        float          fValue;          4
d    雙精確度浮點數            雙精確度浮點數        double         dValue;          8
-------------------------------------------------------------------------------------
r    引用                                        float          &rfValue;
p    指標(pointer)           指標                char           *pchName;        4
pp   多級指標                                    int           **ppnData;        4
lp   長指標(VC++自訂)                          char FAR*      *lpchValue;    
pk   const指標(pointer)      const指標           const char     *pkchName;       /
         /* unsigned char *pchData; 單字元    /  unsigned short *pusData;  */
         /* const     int *pknData;           /  unsigned int   *punData;  */
psz  指向以0結尾的字串指標(C風格字串)        char *psz   = "Hello World.";   4
sz   以0結尾的字串(C風格字串)                char sz[]   = "Hello World.";   13
                                                 char sz[13] = "Hello World.";   13
ach  字元數組                不以0結尾           char achName[2] = {'a', 'b'};   2
-------------------------------------------------------------------------------------
t    typedef自訂類型 union、struct結構體等類型 TNameInfo      tName;           /
pt   自訂類型指標    union、struct結構體指標等 PTNameInfo     *ptName;         /
-------------------------------------------------------------------------------------
a    Array數組               數組                char           achName[20];     /
aa   二維Array數組           多位元組            unsigned char  aachName[4][2];  /
-------------------------------------------------------------------------------------
ap   存放指標的數組          存放指標的數組      char           *apchName[2];    /
pa   指向數組的指標          指向數組的指標      unsigned char  (*paucName)[2];  /
-------------------------------------------------------------------------------------
h    Windows物件控點(VC++自訂)                 HWND           hWnd
v    void類型                                    void           *pvValue;        4
k    const類型                                   const int      knValue;
en   enum枚舉類型            枚舉類型            EN_NAME        enName;          4
c    class類                 class類             CName          cName;           /
-------------------------------------------------------------------------------------
pf   函數指標(pointer func)  函數指標            typedef int (*pfMsgFunc)(int type);
-------------------------------------------------------------------------------------
s_   靜態變數(static)        靜態變數            static int     s_nValue;
g_   全域變數(global)        全域變數            int            g_nValue;
m_   類的資料成員(member)    類的資料成員        int            m_nValue;
-------------------------------------------------------------------------------------

字面常量值:
單精確度浮點                float      1.0F/f
雙精確度浮點                           1.0
擴充雙精確度浮點      long double      1.0L
整型                (unsigned) int   3
長整型          (unsigned) long      3L
雙位元組字元            w_char         L'ab'   L'a'        L'漢'
雙位元組字元串          w_char *       L"hello world."     L"雙位元組字元串"
 

宏定義、枚舉值: 全部大寫字元加底線(不要以底線_開頭)        #define  MAX_LEN 256       //不推薦#define  _MAX_LEN 256 
類名:          C開頭,首字母大寫                              class    CMyClass{... ...};
結構體、聯合體: T開頭,首字母大寫(包括使用者自訂類型)          struct   TMySTruct{... ...};  union TMyUnion{... ...};
枚舉:          EM_開頭,全部大寫字元加底線                  enum     EM_MY_ENUM{SUNDAY, MONDY, TUESDAY};     
函數名:        首字母大寫(函數體不要超過200行),動詞或動名    int MyFunction(const char *pkchParam, const int &rknNum){... ...}
虛函數:        Do開頭                                         virtual int DoFunction();
回呼函數:      On開頭                                         void OnTimer(int nParam);
變數名          首碼加首字元大寫(不要出現重名、相似名稱)       int nTotalValue;  //名稱超過30個字母時應縮寫,並注釋說明
                對於某些用途簡單明了的局部變數,也可以使用簡化的方式,如:i, j, k, x, y, z

備忘:C++中,多用const, 儘可能不用宏定義#define;
      以底線_或雙底線__開頭的宏名,已為編譯器預留,使用者自訂的宏名最好不要以底線_或雙底線__開頭.
      除非不得已,否則應該儘可能少使用全域變數。
      每行唯寫一句代碼。
      操作符之間應適當空格(規則略)。
      縮排最好用4個空格代替Tab鍵。

====================================================================================

VC常用首碼列表:
首碼     類型     描述     例子
ch   char 8位字元   chGrade
ch   TCHAR     16位UNICODE類型字元     chName
b   BOOL     布爾變數     bEnabled
n   int   整型(其大小由作業系統決定)     nLength
n   UINT     無符號整型(其大小由作業系統決定)     nLength
w   WORD     16位無符號整型   wPos
l     LONG     32位有符號整型   lOffset
dw   DWORD     32位無符號整型     dwRange
p   *     Ambient memory model pointer 記憶體模組指標,指標變數   pDoc
lp   FAR*     長指標     lpDoc
lpsz LPSTR     32位字串指標     lpszName
lpsz LPCSTR     32位常量字串指標     lpszName
lpsz LPCTSTR     32位UNICODE類型常量指標     lpszName
h   handle     Windows物件控點     hWnd
lpfn (*fn)()     回呼函數指標 Callback Far pointer to CALLBACK function     lpfnAbort

====================================================================================
Windows對象名稱縮寫:

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     hPalette;     CPalette*     pPalette;
HRGN   hRgn;     CRgn*     pRgn;
HMENU hMenu;     CMenu*     pMenu;
HWND   hCtl;     CStatic*     pStatic;
HWND   hCtl;     CButton*     pBtn;
HWND   hCtl;     CEdit*     pEdit;
HWND   hCtl;     CListBox*     pListBox;
HWND   hCtl;     CComboBox*     pComboBox;

====================================================================================
VC常用宏定義命名列表:

首碼     符號類型     符號例子     範圍
IDR_     標識多個資源共用的類型     IDR_MAINFRAME     1~0x6FFF
IDD_     對話方塊資源(Dialog)     IDD_SPELL_CHECK     1~ 0x6FFF
HIDD_   基於對話方塊的上下文協助     HIDD_SPELL_CHECK     0x20001~0x26FF
IDB_     位元影像資源(Bitmap)     IDB_COMPANY_LOGO     1~0x6FFF
IDC_     游標資源(Cursor)     IDC_PENCIL   1~0x6FFF
IDI_     表徵圖資源(Icon)     IDI_NOTEPAD 1~0x6FFF
ID_、IDM_     工具列或功能表列的命令項     ID_TOOLS_SPELLING     0x8000~0xDFFF
HID_     命令上下文協助     HID_TOOLS_SPELLING     0x18000~0x1DFFF
IDP_     訊息框提示文字資源     IDP_INVALID_PARTNO     8~0xDFFF
HIDP_   訊息框上下文協助     HIDP_INVALID_PARTNO     0x30008~0x3DFFF
IDS_     字串資源(String)     IDS_COPYRIGHT     1~0x7FFF
IDC_     對話方塊內的控制資源     IDC_RECALC   8~0xDFFF

====================================================================================
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 *)相同,可以用來代替LPSTR

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.