2012-05-26 24 views
0

假設下面的一段Ç代碼:在下面的代碼片段中定義一個宏有什麼好處?

#define SOME_MACRO(m) \ 
    void (*f)(m);   \ 
    unsigned int a;  \ 
    int *self; 

,然後,做

typedef struct _Str { 
    SOME_MACRO(whatever) 
    char sthg[2]; 
} STR; 

我的問題是一個結構:這是什麼設計選擇的目的是什麼?例如,我們並不是在節省間接時間。這裏還有什麼比試圖模塊化代碼_STR更多的嗎?

回答

0

SOME_MACRO(m)將函數指針轉換爲函數指針,返回一個返回值類型爲m的參數,也是一個無符號整型和指向int的指針。我相信背後的設計理由是高度特定的,並且沒有更詳盡的代碼示例,我相信這會用於模塊化代碼。

3

我的項目使用該模式來確保某些方法/成員在每個項目類中都可用(例如用於編組)。再次沒有更多的例子,沒有辦法確認,但那是我的理論。

+0

羅布,你在說C? –

+0

在我們的例子中,C++,但同樣的想法可以適用於C,這取決於宏...它是用在多個結構中的嗎? –

+0

實際上,鑑於它是C,這可能是一種基本的多態性......例如,請參閱「self」。 –

-1

只是從你給出的代碼中,我也不能做出解釋,但它看起來很簡單,所以我認爲這只是一個新程序員的測試宏,因爲「SOME_MACRO」= some宏測試代碼...

+1

我想你已經錯過了這一點; OP可能已經刪除了一些與他們的工作相關的細節,但總體上是在詢問這種技術。 – Ashe

相關問題