原创 Win32 API (3) ZeroMemory,SecureZeroMemory

ZeroMemory ZeroMemory 是一個宏,不是函數,它的定義如下: #define ZeroMemory RtlZeroMemory #define RtlZeroMemory(Destination,Length)

原创 Win32 API (2) lstrlen

lstrlen 像很多和字符串有關的 Windows API 一樣,lstrlen 是一個宏,有 ASCII 和 UNICODE 兩個版本: #ifdef UNICODE #define lstrlen lstrlenW #el

原创 Win32 API (1) WinExec

WinExec 函數原型如下: UINT WinExec( LPCSTR lpCmdLine, UINT uCmdShow ); 該函數用於運行一個指定的應用程序,現在已經淘汰,僅用於保持對16位Windows操作系

原创 進位標誌和溢出標誌的含義和理解

進位標誌和溢出標誌 這次大概總結一下進位標誌(Carry Flag, CF)和溢出標誌(Overflow Flag, OF)的含義和理解方式 首先明確一點基本認識,處理器本身並不在意也不知道參與算術運算或者邏輯運算的操作數是有符號

原创 通過虛擬機實現裸機彙編環境

通過虛擬機實現裸機彙編環境 1. 簡述 操作系統帶來便利的同時也引入了大量限制,在操作系統存在時,我們編寫的程序不能直接被硬件加載。我們必須按照操作系統的約定,把程序編譯成特定的可執行文件格式(比如Windows的PE文件格式,L

原创 Intel X86 的內存尋址模式

Intel X86 的內存尋址模式 1. 直接尋址(Direct memory addressing mode) 通過立即數直接指定偏移地址,段地址隱含在指令中,當然也可以人爲指定段寄存器。 MOV EAX, [0X8FFCBC]

原创 "const wchar_t *" 類型的實參與 "LPCSTR" 類型的形參不兼容的原因和解決方法

常見字符類型 寬字符串字面量L"Wide string literal"屬於const wchar_t*,採用UNICODE編碼,標準C類型。 字符串字面量"string literal"屬於const char*,採用ANSI

原创 隨機迷宮生成與尋路算法(3)深度優先搜索

通過深度優先搜索求解迷宮 在上一篇文章中我們實現了基於深度優先搜索(DFS)的隨機迷宮生成。方法類似,我們也可以利用DFS來進行隨機迷宮尋路,也就是我們這一次文章的實現目標。 我們將嘗試通過深度優先搜索來求解上一篇文章中生成的隨機

原创 C語言通過變量控制輸出精度的兩種方法

有的時候需要通過用戶輸入的變量來控制數據的輸出寬度,總結了一下,大概有兩種辦法: 1.直接使用轉換說明符 * 我們都知道可以通過%m.n來控制數據的輸出範圍,這裏要求m和n都是字面量 類似地,標準庫也提供了通過變量來控制寬度的方法

原创 C++ Primer習題解答 Chapter12

12-30 要實現的功能: 從文件讀入文本,並保存以用於查找 給讀入的文本建立一個從單詞到其出現的全部行號的映射 讀取用戶輸入的單詞,查找該單詞是否出現過,如果出現過打印出所在行和行號 根據上面列出來的基本需求,決定應該使用哪

原创 C++ Primer習題解答 Chapter11

11-3 #include<iostream> #include<vector> #include<string> #include<cctype> #include<iterator> #include<stdexcept> #

原创 C++ Primer習題解答 Chapter10

10-1 #include<iostream> #include<vector> #include<string> #include<cctype> #include<iterator> #include<stdexcept> #

原创 C++ Primer習題解答 Chapter8

8-1 #include<iostream> #include<vector> #include<string> #include<cctype> #include<iterator> #include<stdexcept> u

原创 基於maven建立第一個Bukkit plugin項目

環境準備: 首先確保已經配置好了JDK和Maven環境 根據模板建立項目: 進入一個準備好的目錄,在當前目錄下打開命令行並輸入下面的命令: mvn archetype:generate -DgroupId=me.cmiao.mcplug

原创 Windows應用程序(C/C++)(2) C++基礎知識

C++基礎知識 2.1 結構體和類 在C語言中通過struct關鍵字定義結構體,C語言中的結構體可以包含多個類型任意的數據成員,但是不能包含函數成員。在C++中同樣可以通過struct關鍵字定義結構體,與C語言不同的是該結構體支持