前段時間研究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 無論什麼...