第2章,[標簽 Win32] :匈牙利標記法

專欄導航

上一篇:第2章,[標簽 Win32] :Windows 數據類型

回到目錄

下一篇:第2章,[標簽 Win32] :兼容 ASCII 字符與寬字符的 Windows 函數調用

本節前言

在初學編程的時候,我們給變量命令的時候,都是使用一些個比較簡單的名字。

那是因為,初學編程的時候,代碼量比較小,簡單好記的名字,足以滿足我們的學習需求。

然而,隨著代碼量的增長,這個時候,我們就需要一套規范,統一地,來對變量的名字,進行命名了。這可以讓變量的名字比較規范,整齊,容易看懂。

變量的命名規范有很多,在 Windows 程序設計領域,通行的變量命名規范,叫做匈牙利標記法。

本節,我們的任務,就是來講述匈牙利標記法。

其實,在本節之前,我們已經部分地講解了匈牙利標記法。然而,那個時候,并未系統地去講述。。本節,我們就要比較詳細地,來講解一下匈牙利標記法了。

想要學習本節內容,你最好首先學習過以下的文章鏈接中的內容。

參考課節:第2章 :Windows 字符數據類型

參考課節:第2章,[標簽 Win32] :Windows 數據類型

接下來,我們開始本節的講解。

一.? ? 匈牙利標記法

所謂的匈牙利標記法,它是說,在變量名的最左邊,是由一個或多個小寫英文字母組成的東西,用以表明變量的數據類型。我們可以把這一部分,叫做數據類型字段。比如說,h 代表句柄,i 或 n 代表整數,sz 代表【以零結尾的字符串】,等等。

在數據類型字段之后,是單詞組合,每一個單詞的首字母為大寫,其余的為小寫。

假定,我們要定義一個 int 型變量,用它來標識屏幕寬度。那么,它的數據類型為 int 型,所以呢,可以用 n 來作為前綴。屏幕寬度,用英文單詞表示為 screen width 。所以呢,這個變量的名字,就成了 nScreenWidth 。

本專欄既講解 Windows API 知識,也會講解 MFC 的知識。在 MFC 里面,我們還會跟各種類打交道。

如果某一個變量,它是類的成員變量,則我們還需要在原本的匈牙利標記法之前,加上【m_】前綴。

假定我們想要命名的,表示屏幕寬度的變量 nScreenWidth 是一個類的成員變量,則我們需要給它設定的變量名字為 m_nScreenWidth 。

關于匈牙利標記法,基本內容就這些了。

接下來,我們來看一看各種數據類型的前綴表示法。

二.? ? 匈牙利標記法前綴總結表

前綴數據類型
cchar 或 WCHAR 或 TCHAR
cb整數類型,意思是【字節數】
byBYTE,無符號字符
n 或 i整數,int 型或 short 型
xint 型,表示 x 的坐標
yint 型,表示 y 的坐標
cxint 型,表示 x 的長度,c 表示 count(計數)
cyint 型,表示 y 的長度,c 表示 count(計數)
b 或 fBOOL 型,其實是 int 型。f 表示 flag(標志)
wWORD,無符號短整型
lLONG,長整型
dwDWORD,無符號長整型
fn函數,fn 是 function(函數)的簡寫
lpfn指向函數的長指針。從 32 位操作系統開始,長指針與指針是同樣的意思。所以,lpfn,表示的是【函數指針】這一數據類型。
s字符串
sz以零結尾的字符串
h句柄,h 是 handler(句柄)的簡寫
p指針
lp長指針,從 32 位操作系統開始,p 和 lp 等價。lp 是 long pointer 的意思
psz 或 lpsz指向以零結尾的字符串的指針,其實和 sz 是一個意思。因為,C/C++ 中表示字符串,都是只給出字符指針,而非給出全部字符。
m_這個前綴,主要用于類的成員變量,用作類的成員變量名的前綴。

三.? ? 注意點

(一)BOOL 型前綴,b 與 f

如果某一個變量為 BOOL 型,則通常使用 b 作為前綴。當然了,你也可以使用 f 前綴。在 C/C++ 中,某一個標志變量,常常是作為 BOOL 型來處理的,只使用其 TRUE 與 FALSE 兩個值。TRUE 就是 1,數值上與 C++ 數據類型 bool 中的 true 相等。FALSE 就是 0,數值上與 C++ 數據類型 bool 中的 false 相等。

(二)句柄前綴,h

關于【句柄】的概念,我們在之前的講解中,雖然有提到。但是呢,有可能,此刻,你對它還是缺乏概念。關于【句柄】,在后面,我們會使用到它的。用得多了,你就明白【句柄】這個概念了。

結束語

匈牙利標記法,不算難,但是呢,也確實是需要大家來掌握的一個小知識點。

可能記不住這里的全部的內容。用到了,隨時查閱就好了。用得多了,慢慢地就熟悉了。

?專欄導航

上一篇:第2章,[標簽 Win32] :Windows 數據類型

回到目錄

下一篇:第2章,[標簽 Win32] :兼容 ASCII 字符與寬字符的 Windows 函數調用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87979.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87979.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87979.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從深度學習的角度看自動駕駛

從深度學習的角度看自動駕駛 A Survey of Autonomous Driving from a Deep Learning Perspective 我們探討了深度學習在自主駕駛中的關鍵模塊,例如感知,預測,規劃以及控制。我們研究了自主系統的體系結構,分析了如何從模塊化&…

java+vue+SpringBoo基于Hadoop的物品租賃系統(程序+數據庫+報告+部署教程+答辯指導)

源代碼數據庫LW文檔(1萬字以上)開題報告答辯稿ppt部署教程代碼講解代碼時間修改工具 技術實現 開發語言:后端:Java 前端:vue框架:springboot數據庫:mysql 開發工具 JDK版本:JDK1.8 數…

【文獻筆記】Automatic Chain of Thought Prompting in Large Language Models

Automatic Chain of Thought Prompting in Large Language Models 原文代碼:https://github.com/amazon-research/auto-cot 標題翻譯:大規模語言模型中的自動思維鏈提示 1. 內容介紹 在提示詞中提供思考步驟被稱為思維鏈(CoT)&…

【Behavior Tree】-- 行為樹AI邏輯實現- Unity 游戲引擎實現

行為樹簡易敵人AI 前言: 有些天沒更新新文章了,主要是最近科一有些頭疼,而且最近琢磨這個行為樹代碼有些難受,但是終于熬出頭了,MonoGame的系列會繼續更新的,今天不說別的就說困擾我兩三天的行為樹 有限狀態…

百度大模型開源,倆條命令、本地啟動

百度大模型開源 本地啟動手冊 安裝依賴: python -m pip install paddlepaddle-gpu3.1.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-80_…

rabbitMQ讀取不到ThreadLocal消息的bug

rabbitMQ讀取不到ThreadLocal消息的bug 當使用消息隊列時,監聽隊列不會運行到主線程上,線程消息之間是不會共享的,故屬于主線程的ThreadLocal就讀取不到數據的值 主線程名字:main使用消息隊列的線程名字:ntContainer#2…

IDEA Maven報錯 無法解析 com.taobao:parent:pom:1.0.1【100%解決 此類型問題】

IDEA Maven報錯 無法解析com.taobao:parent:pom:1.0.1【100%解決 此類型問題】 報錯日志 PS D:\Learn_Materials\IDEA_WorkSpace\Demo\spring_test_demo> mvn clean install -U [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered whi…

函數-1-字符串函數

函數-1-字符串函數字符串函數函數語法字符串函數的使用字符串函數語法案例演示實戰練習字符串函數 函數 函數是一段可以直接被另一端程序調用的程序或代碼 語法 SELECT 函數名(參數名)大家可能會有那么一點點疑惑, 為什么執行函數還需要加上SELECT語句? 總結一下, 因為SEL…

打破AI落地困局:易路iBuilder的“垂直深耕+開箱即用”破壁之道

中國企業的數字化轉型已步入深水區,人力資源管理作為企業核心競爭力的關鍵引擎,正經歷從“信息化”向“智能化”的范式躍遷。在這場以AI為驅動的組織效能革命中,??易路人力資源科技??憑借前瞻性的“軟件AI服務”戰略,推出國內…

Higress離線部署

1.前提條件檢查docker和docker compose是否已經具備 [roothost151 ~]# docker -v Docker version 26.1.4, build 5650f9b [roothost151 ~]# docker composeUsage: docker compose [OPTIONS] COMMANDDefine and run multi-container applications with DockerOptions:--all-res…

利用AI技術快速提升圖片編輯效率的方法

通過更換背景或進行其他創意編輯,可以為圖片賦予新的生命力和視覺效果,使得創意表達更加自由靈活。這款AI摳圖工具堪稱強大,依托先進的阿爾法通道技術,能夠精準、自然地實現圖像摳取與背景更換。操作也非常簡單,只需將…

Wend看源碼-RAGFlow(上)

前言 最近在github上搜羅Rag相關項目的時候,我根據star 搜索到了目前star 最高的一些RAG 項目 ,其中穩居榜首的就是RAGFlow。 RAG stars:>1000 language:Python pushed:>2025-01-01 github RAG 相關項目搜索結果 為了系統性的學習RAG 技術棧&#…

LangChain實現RAG檢索增強

1:啟動vllm的openai兼容server: export VLLM_USE_MODELSCOPETrue python -m vllm.entrypoints.openai.api_server --model qwen/Qwen-7B-Chat-Int4 --trust-remote-code -q gptq --dtype float16 --gpu-memory-utilization 0.6 2:構建向量數據庫 from langchain_…

Redis基礎(6):SpringDataRedis

SpringDataRedis簡介 SpringData是Spring中專門進行數據操作的模塊,包含了對于各種數據庫的集成。其中對Redis的集成模塊叫做SpringDataRedis(官網地址:Spring Data Redis)。其最核心的特點就是提供了不同Redis客戶端的整合&…

B. Shrinking Array/縮小數組

B. Shrinking Array讓我們稱一個數組 b 為 i 美麗 ,如果它至少包含兩個元素,并且存在一個位置 |bi?bi1|≤1 使得 |x| (其中 x 是 #10# #11# 的絕對值)。給定一個數組 a ,只要它至少包含兩個元素,你就可以執行以下操作&#xff1a…

【學習筆記】Linux系統中SSH服務安全配置

一、背景知識 以ubuntu為例,查看ssh服務是否安全并配置,執行 ssh -V ssh的配置文件路徑:/etc/ssh/sshd_config 二、SSH服務配置文件 1.端口和監聽設置 Port 22 含義:指定SSH服務監聽的端口號(默認是22&#xff09…

FastAPI + Tortoise-ORM + Aerich 實現數據庫遷移管理(MySQL 實踐)

在 FastAPI 項目中,Tortoise-ORM 是一個輕量的異步 ORM 框架,適用于 async/await 場景。結合數據庫遷移工具 Aerich,可以優雅地管理數據庫表結構演進,本文將通過完整流程演示如何在 MySQL 環境下使用。📦 一、環境準備…

7.7日 實驗03-Spark批處理開發(2)

使用Spark處理數據文件檢查數據檢查$DATA_EXERCISE/activations里的數據&#xff0c;每個XML文件包含了客戶在指定月份活躍的設備數據。拷貝數據到HDFS的/dw目錄樣本數據示例&#xff1a;<activations><activation timestamp"1225499258" type"phone&q…

C語言可變參數感悟

#include <stdio.h> #include <stdarg.h> #if 1 /* *在C語言中&#xff0c;可變參函數是指參數數量不固定的函數&#xff0c;比如printf\scanf *可變參函數的語法&#xff1a; *返回類型 函數名&#xff08;固定函數&#xff0c;.....) { //函數體 } *1、包含頭文件…

LeetCode 1248.統計優美子數組

給你一個整數數組 nums 和一個整數 k。如果某個連續子數組中恰好有 k 個奇數數字&#xff0c;我們就認為這個子數組是「優美子數組」。 請返回這個數組中 「優美子數組」 的數目。 示例 1&#xff1a; 輸入&#xff1a;nums [1,1,2,1,1], k 3 輸出&#xff1a;2 解釋&#xf…