typedef分析(針對ccColor4B)
[i][b]本文為firedragonpzy原創,轉載務必在明顯處註明:
轉載自【Softeware MyZone】原文連結: http://www.firedragonpzy.com.cn/index.php/archives/962[/b][/i]
不早了,就到這裡吧,呼呼……
轉載自【Softeware MyZone】原文連結: http://www.firedragonpzy.com.cn/index.php/archives/962[/b][/i]
typedef 宣告,為現有型別建立一個別名。使用typedef可以簡化程式碼:例如:指標函式typedef int (*pzy) (int a); pzy wuzhe;另外,使用typedef可以促進跨平臺開發;研究這個主要是我使用cocos2d-x的時使用ccc4發現的;
大家看下原始碼:
typedef struct _ccColor4B
{
GLubyte r;
GLubyte g;
GLubyte b;
GLubyte a;
} ccColor4B;
//! helper macro that creates an ccColor4B type
static inline ccColor4B
ccc4(const GLubyte r, const GLubyte g, const GLubyte b, const GLubyte o)
{
ccColor4B c = {r, g, b, o};
return c;
}
/** RGBA color composed of 4 floats
@since v0.8
*/
typedef struct _ccColor4F {
GLfloat r;
GLfloat g;
GLfloat b;
GLfloat a;
} ccColor4F;
/** Returns a ccColor4F from a ccColor3B. Alpha will be 1.
@since v0.99.1
*/
static inline ccColor4F ccc4FFromccc3B(ccColor3B c)
{
ccColor4F c4 = {c.r/255.f, c.g/255.f, c.b/255.f, 1.f};
return c4;
}
_ccColor4B使用了GLubyte ,而_ccColor4F 使用了GLfloat ,GLfloat是這麼定義的;typedef khronos_float_t GLfloat;khronos_float_t 是這麼定義的typedef float khronos_float_t;我那個鬱悶啊!在之前直接使用float定義不就行了啊,為什麼使用khronos_float_t,多走一步,鬱悶……
而且GLubyte 也是同理,typedef khronos_uint8_t GLubyte;到typedef unsigned char khronos_uint8_t;
後來看了百科的:促進跨平臺開發
typedef 有另外一個重要的用途,那就是定義機器無關的型別,例如,你可以定義一個叫 REAL 的浮點型別,在目標機器上它可以獲得最高的精度:
typedef long double REAL;
在不支援 long double 的機器上,該 typedef 看起來會是下面這樣:
typedef double REAL;
並且,在連 double 都不支援的機器上,該 typedef 看起來會是這樣:、
typedef float REAL;
你不用對原始碼做任何修改,便可以在每一種平臺上編譯這個使用 REAL 型別的應用程式。唯一要改的是 typedef 本身。在大多數情況下,甚至這個微小的變動完全都可以通過奇妙的條件編譯來自動實現。不是嗎? 標準庫廣泛地使用 typedef 來建立這樣的平臺無關型別:size_t,ptrdiff 和 fpos_t 就是其中的例子。此外,象 std::string 和 std::ofstream 這樣的 typedef 還隱藏了長長的,難以理解的模板特化語法,例如:basic_string,allocator> 和 basic_ofstream>。
才明白,原來是為了跨平臺……
但這裡也有個很值得研究的地方typedef unsigned char,在使用ccc4的時候我傳的是0~255,而typedef unsigned char這個是形式引數的型別,現在貼出,望大家詳解char,int等型別的定義……由於各種原因,請先到
[url]http://firedragonpzy.d3.tuidc.com/index.php/archives/962[/url]這裡評論留言不早了,就到這裡吧,呼呼……
相關文章
- McAfee針對GandCrab勒索軟體的分析
- 針對服裝行業管理痛點作出分析行業
- typedef用法
- 針對資訊竊取惡意軟體AZORult的分析
- 針對巴基斯坦的某APT活動事件分析APT事件
- 針對新型程式注入技術Ctrl-Inject原理分析
- 【資料分析】針對家庭用電資料進行時序分析(1)
- Forrester:針對預測分析能力進行架構規劃REST架構
- FBI針對Tor網路的惡意程式碼分析
- #define 與 typedef
- 針對ShotGun的ServerRewindOTGServer
- 利用Office宏及Powershell的針對性攻擊樣本分析
- 利用Office巨集及Powershell的針對性攻擊樣本分析
- 10個針對企業的免費大資料分析工具大資料
- typedef關鍵字
- typedef用法小結
- C語言 typedefC語言
- 針對oracle日常維護Oracle
- 針對 Oracle 配置 LinuxOracleLinux
- Java技術開發專題系列之【Guava RateLimiter】針對於限流器的入門到精通(針對於原始碼分析介紹)JavaGuavaMIT原始碼
- 如何掃描網站漏洞 針對於海洋CMS的漏洞檢查分析網站
- 針對python錯誤 format()PythonORM
- 前端針對 XSS 安全配置前端
- 淺談typedef與define
- 使用cProfile針對回測進行效能分析,和結合說下提速思路
- 針對IE及其它的css hackCSS
- 針對Adblock廣告遮蔽處理BloC
- 針對小手指的設計思考
- 針對oracle效能的io調優Oracle
- 在 dart fluter 中使用 typedefDart
- typedef與define的區別
- define和typedef的區別
- typedef void (*Fun) (void) 的理解——函式指標——typedef函式指標函式指標
- MySQL 針對 like 條件的優化MySql優化
- 這波React屬實被針對了React
- iOS 針對有中文的url圖片iOS
- RUP/XP 方針:成對程式設計程式設計
- 針對MSSQLSERVER的安全防禦方案(轉)SQLServer