C C 中巨集的妙用

2021-09-30 12:17:01 字數 965 閱讀 8865

本文總結記錄一些在工作和學習中碰到的一些對c/c++巨集的妙用,大都來自於android,chromium,webkit等開源專案**。看到好的巨集的使用,本文也會不定時的更新。

一. 妙用一:減少重複**

1. 下例,通過巨集的使用,定義了一系列僅僅關鍵字不同的變數和函式,極大的減少了**的重複。這樣對**進行修改、擴充套件等也更加方便。

#define v8_hidden_properties(v) \

v(objectprototype) \

v(listener) \

v(attributelistener) \

v(scriptstate) \

v(devtoolsinjectedscript) \

v(sleepfunction) \

v(tostringstring) \

v(event)

class v8hiddenpropertyname

#define v8_declare_property(name) static v8::handlename();

v8_hidden_properties(v8_declare_property);

#undef v8_declare_property

private:

#define v8_declare_field(name) v8::persistentm_##name;

v8_hidden_properties(v8_declare_field);

#undef v8_declare_field

};#define v8_define_property(name) \

v8::handlev8hiddenpropertyname::name() \

\return hiddenpropertyname->m_##name; \

}v8_hidden_properties(v8_define_property);

C C的typedef的妙用

typedef int array 5 array是乙個型別為int長度為5的陣列型別,即定義乙個array a 那麼a就是乙個型別為int長度為5的陣列,所以a的使用方法和陣列一致。typedef int array 5 array a int i 0,j 0 for i 0 i 5 i a i ...

再看C C 中的巨集 Macros

通常我們對c c 中巨集的理解不外乎兩點 一,用來處理標頭檔案的重複包含。二,用來定義類似的函式的巨集。define max a,b a b a b 類似於這樣的作法主要是想繞過型別檢查,這樣無論a和b是什麼型別之要能用 運算子來比較的便可以使用巨集來代替反覆寫max函式不同版本。但這樣做明顯有乙個...

C,C 巨集中 與 的講解

文中 file 與示例1的可以參見 使用ansi c and microsoft c 中常用的預定義巨集 巨集中的 的功能是將其後面的巨集引數進行字串化操作 stringizing operator 簡單說就是在它引用的巨集變數的左右各加上乙個雙引號。如定義好 define string x x之後...