神奇的xx巨集

2021-08-22 01:35:27 字數 1053 閱讀 2892

前段時間研究lcc,看見token.h裡有這樣一些**:

xx(float, 1, 0, 0, 0, char, "float")

xx(double, 2, 0, 0, 0, char, "double")

xx(char, 3, 0, 0, 0, char, "char")

xx(short, 4, 0, 0, 0, char, "short")

yy(0, 94, 7, bxor, bittree,'^', "^")

yy(0, 95, 0, 0, 0, 0, 0)

yy(0, 96, 0, 0, 0, 0, 0)

yy(0, 97, 0, 0, 0, 0, 0)

#undef yy

#undef xx

初看有點不解,xx到底是個什麼東西呢?但從這些資訊很容易想到,其中每一行描述乙個token的資訊。把**大概看了一下,主要有以下幾個地方引用到token.h:

在enode.c中:

tree (*optree)(int, tree, tree) = ;

在expr.c中:

static int oper = ;

在output.c中:

static char *tokens = ;

看了這些**,一下明了了作者的意圖:把每個token相關的資訊放在一起,便於集中管理,而在不同的地方,通過把xx/yy定義成不同功能的巨集,以提取所需要的資訊。稱它為xx/yy,正是因為這兩個巨集在使用時還有沒定義,在不同的上下文中,其功能是不同的。

1.主視窗類

2.主視窗名

3.id

4.名稱

5.inf檔名

6.入口函式

7.資源

使用方式如下:

#undef xx

, };

#undef xx

{ 現在只要乙個人維護這張表和工程檔案,其它地方都不需要修改,至此之後一切平安無事。

最近研究zx的手機開發平台,裡面用了image_def/text_def等實現了類似的功能,xx換成了更具明顯意義的巨集,給人感覺更直觀一些。

神奇的RAC巨集

先說說rac中必須要知道的巨集 rac target,keypath,nil value 使用 rac self.outputlabel,text self.inputtextfield.rac textsignal rac self.outputlabel,text,收到nil時就顯示我 self...

神奇的中醫!神奇的文化!

本草備要 中載 王荊公患偏頭痛,搗萊服汁,仰臥,左痛注右鼻,右痛注左鼻,或兩鼻齊注,數十年患,二註而愈。其中所說萊菔汁就是蘿蔔汁。上邊這段話好人的部落格上都有,但是不知道有幾個人嘗試過,我因長期患偏頭疼終無良方,今天下定決心試上一試,據說中西醫對 頭疼均沒有什麼特效藥物,於是我的偏頭疼也伴隨我十幾年...

正則匹配以xx開頭以xx結尾的單詞

在字串處理中,正規表示式是一大利器,但其對於初學者而言是存在一定的難度的。而如何匹配以xx開頭以xx結尾的單詞呢?假設需要匹配的字串為 site sea sue sweet see case sse ssee loses 需要匹配的為以s開頭以e結尾的單詞。正確的正則式為 bs s e b 無論什麼...