2009年8月1日 星期六

巨集

最近在看別人的sample code的時後,又發現有趣的程式


常常看到#if  和#endif,後來發現這都和#deifne 一樣,都是macro的寫法。


寫個簡單的範例


#define macro1



#if defined macro1
    #define w1 2
#elif defined macro2
    #define w1 3
#elif defined macro3
    #define w1 4
#else
    #define w1 5
#endif


這樣w1 為2,


如果在#define macro2的話


那w1就會為3。


只要在一開始的#define 改變不同的定義,這樣w1的值就會不同。


利用macro的好處在於我只要定義不同的功能,而且可以不需要將原本的程式註解掉,這樣程式也可以不用一直刪來刪去的,真的是太方便了。而且不會浪費ROM size 或是RAM size。


 


1 則留言:

  1. 巨集為文章取代處理程序,也就是將有定義到的地方用新的文字取代。巨集處理完後才會真正去編譯。所以巨集內容常常會有括號起來,就是怕和前文會有順序干擾的問題。所以看到別人的巨集有括號,不要隨意去除。
    [版主回覆08/03/2009 08:17:08]難怪我在看別人的sample code的時後,常常會看到括號。
    謝謝您又讓我學了一課了。

    回覆刪除