一起來讀源碼701-NanoLog Cycles

詳情請見:

Cycles.h

Cycles.cc

 

知識前提:
__attribute__: 編譯器屬性設置
一共有以下屬性:
align:手動指定對齊格式(單位:字節)
packed:把內存中的數據緊靠在一起
alloc_size:給指針綁定空間大小
always_inline:強制內聯
objc_subclassing_restricted:禁止增加子類
objc_requires_super:當子類覆蓋父類的時候,子類需要調用下父類的方法,不調用會產生警告,不會報錯
objc_boxable:將struct 或者unions 轉換成NSValue
constructor / destructor:在可執行文件(或 shared library)load 和 unload 時被調用,可以理解爲在 main() 函數調用前和 return 後執行
enable_if:只能用在 C 函數上,可以用來實現參數的靜態檢查
cleanup:聲明到一個變量上,當這個變量作用域結束時,調用指定的一個函數
overloadable:用於 C 函數,可以定義若干個函數名相同,但參數不同的方法,調用時編譯器會自動根據參數選擇函數原型
objc_runtime_name:用於 @interface 或 @protocol,將類或協議的名字在編譯時指定成另一個
_Noreturn:指定函數不會由於執行到 return 語句或抵達函數體結尾而返回
availability:描述相對於操作系統版本的聲明的生命週期
diagnose_if:如果對屬性函數的調用滿足某些用戶定義的條件,則可以將該屬性放在函數聲明上,以便在編譯時發出警告或錯誤
format (gnu::format):clang支持format屬性。該函數接受printf或scanf格式字符串和相應的參數 或這包含參數的va_list 參數列表
__has_attribute:用來檢測是否有屬性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章