原创 const關鍵字

const修飾引用 1,一旦引用已經定義,它就不能再指向其他的對象.這就是爲什麼它要被初始化的原因 int & a; // error int & a = 10; // ok2,const引用可以用不同類型的對象初始化(只要能

原创 c++模板元編程

元編程介紹 藉助c++編譯期模板展開邏輯生成c++代碼的過程叫做模板元編程。對比c++語言本身,編譯期間可以訪問的數據叫做元數據,操作元數據的代碼叫做元函數。 元數據 編譯期可以感知的常量,如類型,整形常量(包括枚舉變量,函數地址等) 元

原创 宏元編程——代碼生成

使用複製粘貼處理重複代碼 學過c++模板元編程的會知道模板特化。模板特化可以理解成模板元函數的重載(這個地方不瞭解也不太重要)。說白了就是要定義一組相似的模板。 template<> struct sample<0> { }; temp

原创 宏元編程—邏輯控制——實現分支

分支宏定義 #define TL_IF(condition,t,f) if-body condition爲1,if-body宏展開成t condition爲0,if-body宏展開成f 定義兩個輔助宏 #define TL_IF_1(1

原创 宏元編程——技術——宏重載

學過c++語言都知道函數重載,宏可以重載嗎? #define MACRO(number) TL_ADD(number,10) #define MACRO(number1,number2) TL_ADD(number1,number2)上

原创 宏元編程——技術——auto_rec

auto_rec宏會快速探測滿足探測謂詞條件的“序號”最小的宏。如果滿足條件會走實線深度往下探測,當遇到不滿足條件會走虛線。 下面以探測16以內的“序號” # define TL_NODE_16(p) TL_IF(

原创 java面向對象編程

對象 軟件中的“對象”由狀態和行爲組成。並且這些“對象”通常可以和現實世界中的對象對應上。如:人,動物。 類 類是一個對象的創建樣板。對象的生成都是參照類來生成。或者說類是讀對象的描素。這個有點類似xml schema和xml文件的關係。

原创 宏元編程

宏元編程定義 宏元編程目的是利用宏在展開時候的特性減少重複代碼,提供更高層的編程抽象。 宏的定義 宏有兩種形式,帶參數和不帶參數 #define identifier replacement-list #define identifie

原创 宏元編程——算數計算——INC,DEC

實現思路:宏展開無法在預編譯期完成“真正”的算數計算,但是我們可以定義一張靜態表,例如:遇到INC(5)就替換成 6,遇到DEC(8)就替換成7。 TL_INC實現: #include "tl/cat.h" #define TL_INC

原创 宏元編程——技術——解決重入引起展開失敗問題

什麼是宏重入? 宏在展開的時候,如果遇到同名的宏會終止展開,把同名的宏當成一個整體。 #define MY_CAT(p1,p2) MY_CAT_D(p1,p2) #define MY_CAT_D(p1,p2) p1##p2 #defi

原创 循環與遞歸

題目 輸入: n表示參數個數,p表示參數名稱prefix 輸出: 字符串p1,p2,......pn 使用循環求解 void print_args_by_iteration(int n, char* prefix) { char ar

原创 宏元編程——邏輯計算——AND,OR,XOR,NOR

代碼比較簡單AND,OR,XOR和NOR最終底層通過BITXXX宏來實現。以TL_AND爲例 #define TL_AND(x, y) TL_BITAND(TL_BOOL(p), TL_BOOL(q)) TL_BITAND宏會把1~25

原创 obs classic 代碼閱讀一

關聯d3d和render窗口     繪製capture的圖像   拷貝“源”保存源內容,準備編碼發送 此處把mainRenderTextures裏保存的內容再繪製到yuvRenderTextures裏 拷貝出d3dYUV

原创 宏元編程——邏輯控制——實現循環一

循環宏定義 #define TL_WHILE(pred,op,state) while-body pred是一個二元的宏形式是pred(d,state),當pred返回0的時候循環終止 op是一個二元的宏形式是op(d,stat

原创 obs classic 代碼閱讀二

直播源分類 obs裏源的流程 obs核心業務邏輯 MainCaptureLoop承擔視頻的捕獲,和顯示繪製 MainAudioLoop承擔音頻的編碼 EncodeLoop把音視頻合併發送到stream obs流的抽象 網絡和和文件都