Time of Update: 2018-12-04
發現了一個null 指標調用函數成功的例子,很奇怪就查了一下資料,如下:舉個簡單的例子,假如有如下的一段代碼:class MyClass{public: int i; void hello() { printf("hello\n"); } void print() { printf("%d\n", i); }};void main(){ MyClass* pmy = NULL; pmy->hello(); }
Time of Update: 2018-12-04
如果有下列一模板函數:template<typename T>T fun(T a){ return a;};則在使用時有兩種方法:// 方法一fun<int>(5);// 方法二fun(5);而如果是這樣的話template<typename T,typename TT>T fun(TT a){return
Time of Update: 2018-12-04
轉自伯樂線上http://blog.jobbole.com/20091/前兩天發布那個rsync演算法後,想看看資料壓縮的演算法,知道一個經典的壓縮演算法Huffman演算法。相信大家應該聽說過 David Huffman 和他的壓縮演算法—— Huffman Code,一種通過字元出現頻率,Priority Queue,和二叉樹來進行的一種壓縮演算法,這種二叉樹又叫Huffman二叉樹 ——
Time of Update: 2018-12-04
Lua 的基礎庫提供了ipairs,這個遍曆數組的迭代器函數。在每次迴圈中,i會被賦予一個索引值,同時v被賦予一個隊應該索引值的數組元素值。 標準庫提供了幾種迭代器,包括用於迭代檔案中個的每行(io.lines)、迭代table元素(pairs)、迭代數組元素的(ipairs)、迭代字串中的單詞(string.gmatch)還可以編寫自己的迭代器。這幾天在看LUA,只是記錄下自己的一點小小心得。這篇是分析
Time of Update: 2018-12-04
#include <iostream>#include <string>using namespace std;class Wedgit{public:Wedgit(){objectId = count++;cout<<"default :"<< objectId <<endl;}Wedgit(const Wedgit& b):data(b.data){objectId = count++;cout<<"copy
Time of Update: 2018-12-04
4.2 arm組合語言偽指令ADR 小範圍地址讀取指令 ADRL 中等範圍地址讀取指令LDR 大範圍地址讀取指令NOP 空操作指令ADR ADR 將基於PC的地址值或者基於寄存器的地址值讀取到寄存器中start MOV R0, #10
Time of Update: 2018-12-04
更改視窗大小void GUISystem::changeSize(float width, float height) { // 更新CEGUI視窗大小, 同步滑鼠顯示範圍, 來解決CEGUI滑鼠範圍與系統滑鼠範圍一致mpGUIRenderer->setDisplaySize(CEGUI::Size(width, height)); CEGUI::Size s = mpGUIRenderer->getDisplaySize();// 確保UI重新繪製並顯示//說明,
Time of Update: 2018-12-04
一、原理簡介 51 單片機內部有一個全雙工系統串列介面。什麼叫全雙工系統串口呢?一般來說,只能接受或只能發送的稱為單工串列;既可接收又可發送,但不能同時進行的稱為半雙工;能同時接收和發送的串列口稱為全雙工系統串列口。串列通訊是指資料一位一位地按順序傳送的通訊方式,其突出優點是只需一根傳輸線,可大大降低硬體成本,適合遠距離通訊。其缺點是傳輸速度較低。 與之前一樣,首先我們來瞭解單片機串口相關的寄存器。 SBUF
Time of Update: 2018-12-04
一、Qt的GUI程式有一個常用的頂層視窗,叫做MainWindowMainWindow繼承自QMainWindow。QMainWindow視窗分成幾個主要的地區: 二、QAction類QAction類儲存有關於這個動作,也就是action的資訊,比如它的文本描述、表徵圖、快速鍵、回呼函數(也就是訊號槽),等等。神奇的是,QAction能夠根據添加的位置來改變自己的樣子——如果添加到菜單中,就會顯示成一個功能表項目;如果添加到工具條,就會顯示成一個按鈕。把QAction添加到菜單和工具條上: QA
Time of Update: 2018-12-04
Lua 中的 table 由於定義的行為,我們可以對 key-value 對執行加操作,訪問 key 對應的 value,遍曆所有的 key-value。但是我們不可以對兩個 table 執行加操作,也不可以比較兩個表的大小。 Metatables允許我們改變 table 的行為,例如,使用 Metatables我們可以定義 Lua 如何計算兩個 table 的相加操作 a+b。當 Lua 試圖對兩個表進行相加時,他會檢查兩個表是否有一個表有 Metatable,並且檢查 Metatable
Time of Update: 2018-12-04
第四章 ARM組合語言程式設計4.1 arm偽指令包括6種偽指令:符號定義偽指令、資料定義偽指令、彙編控制偽指令、架構描述偽指令、資訊報告偽指令、其他偽指令。4.1.1 符號定義偽指令:用於定義arm組譯工具中的變數,對變數進行賦值以及定義寄存器名稱。 GBLA、GBLL、GBLS 聲明全域變數 LCLA、LCLL、LCLS 聲明局部變數 SETA、SETL、SETS 給變數賦值 RLIST 寄存器列表定義名稱
Time of Update: 2018-12-04
一.訊號* <signal.h> <sys/type.h> <unistd.h> * int sigaction( SIGINT, &act , 0 ) ; act結構體:struct sigaction act; { act.sa_handler = abc; sigemptyset (& act.sa_mask ) ; act.sa_flags=0; }* int kill (pid_t pid , int sig )
Time of Update: 2018-12-04
QStringList類提供了一個字串列表從QList <QString>繼承而來,它提供快速索引為基礎的接入以及快速插入和清除其成員函數用於操作這個字串列表如append(),insert(), replace(), removeAll(), removeAt(), removeFirst(), removeLast(), and removeOne()等1. 增加字串 可以通過append(),或使用<<,如 QStringList fonts;
Time of Update: 2018-12-04
ADR偽指令執行個體;設定本段程式的名稱及屬性AREA adrlabel ,CODE,READONLY ENTRYstart;跳轉到子程式func執行 BL func;調用angel_SWIreason_ReportException;ADP_Stopped_ApplicationExit;ARM semihosting SWIstop MOV R0,#0X18 ;將0X18賦值給R0
Time of Update: 2018-12-04
看一些開源庫,裡面好多類有一個**IMPL。經查詢還是有些門道和說法的。查詢了一些相關資料。(英文沒有翻譯,挺簡單的。)PIMPL 也可以稱為一種設計模式了。現在摘錄如下:pimpl 手法在 C++ 裡已是“高手”們廣泛運用的成熟方法之一,它的優點很多,諸如降低編譯依賴、提高重編譯速度之類的工具性優勢自不待贅言,而其對“保持介面穩定性”的優點更值得稱道。It makes it possible to avoid other classes to know internal data
Time of Update: 2018-12-04
第一章:ARM概述及其基本編程模型1.4 arm處理器模式arm體繫結構支援7中處理模式。使用者模式 (usr) 正常程式執行的模式 快速中斷模式(fiq) 用於高速資料轉送和通道處理 外部中斷模式(irq) 用於通常的中斷處理
Time of Update: 2018-12-04
4.6.2 arm彙編執行個體;設定本段程式的名稱及屬性AREA BLOCK , CODE , READONLY;設定將要複製的字數num EQU 20;標識程式進入點 ENTRYStart;R0寄存器指向來源資料區src LDR R0,=src;R1寄存器指向目標資料區dst LDR R1 ,=dst;R2指定將要複製的字數 MOV R2,
Time of Update: 2018-12-04
1.C語言是一種弱類型的語言,一切它沒有見過的東西,他都會作隱士聲明為int類型,但是到了c99標準,這種特點就被扼殺了,因為不好使。要知道,C語言中的隱士轉換在編譯時間轉換的,而非運行時。2。預先處理一些不常用命令:#error "遇到這東西直接中斷" #warning "遇到這東西報錯而已" #include_next "在指定位置下的下一個目錄尋找(用的少)" #line 100 指定該位置的行號,這樣的話呢,就忽略源檔案中的行號了,報錯的時候就以改行為基準位置。
Time of Update: 2018-12-04
4.3 arm組合語言格式{symbol} {instruction|directive|pseudo-instruction} {;comment}其中:symbol為符號。符號必須從一行的行頭開始,並且符號不能有空格。在指令和偽指令中,符號用作地址標號。在偽操作中,符號用作 變數或者常量 instruction,指令不能從一行的行頭開始,前面必須有空格或者符號 directive
Time of Update: 2018-12-04
#include <iostream>using namespace std;// 回呼函數 虛基類class SlotFunctorBase {public:virtual ~SlotFunctorBase() {};virtual bool operator()(bool flag) = 0;};// 普通函數的封裝類class FreeFunctionSlot : public SlotFunctorBase{public:// 回呼函數 的 簽名(Signature)//