如果不是分段符號,則保留並退出這個巨集的處理。否則的話,需要一直吃下去。
1.巨集的定義
\long\def\filter#1
解釋如下:
1.1.\long的作用,一般的巨集是不允許使用分段符號\par來充當引數的。要允許巨集接收分段符號充當引數,那就在\def前面增加乙個\long
1.2.\def的作用:
1.2.1.\def後面的\filter是巨集名;
1.2.2.#1是輸入模板(用來和輸入的內容做匹配這樣才能提取引數)
1.2.3.這個是輸出模板
1.3.大括號裡面的輸出模板
1.3.1.\ifx#1\par.a..\else.b..\fi:這個負責把輸入的引數和\par進行比較,匹配得上就執行a部分,匹配不上就執行b部分
1.3.2.\expandafter\filter這個是讓\filter延遲展開,也就是先處理後面的\else。否則的話:\fiter會把\else當成輸入進行過濾。
1.4.expand後面的filter為什麼沒有提供引數?此時的filter被延遲展開了,等後面的token生成出來了,自然會繼續處理。並且把後面生成的符號當做輸入處理。
2.巨集的測試
「漢堡」不是用來吃的,它可是乙個機械人。
我得到了乙個 漢堡 可是它並不能食用。沒辦法配上炸雞和啤酒,因為它是乙個機械人。這是乙個不一樣的 漢堡 沒有鬆軟的麵包,沒有鮮嫩的牛肉,更沒有爽口的蔬菜,只是因為形狀像乙個漢堡,但是,它的的確確是乙個十分有趣的機械人。今天,讓我們來談談這個 漢堡 漢堡式堆疊平台burger,它跟你認知裡的漢堡,大不...
乙個巨集定義的用法
巨集定義就是簡單的替換,之前沒見過帶符號的替換,看到這個有點懵了,記錄如下。這裡用 n,代替 fninfo n,l 用的很巧妙。define fninfo n,l n,measvalue measfntbl 以下為names.h中內容 fninfo dominmaxmidhilo,min fninf...
乙個複雜巨集定義的解讀
我們不提倡在寫 的時候出現太多複雜的巨集定義,巨集定義雖然可以簡化 量,但是讀起來非常費勁!下面來看乙個例子 把乙個buff中的資料拷貝到乙個指定的陣列中。由於種種原因,我們用巨集定義來實現這些負責的轉化。如下 include stdafx.h include string.h typedef un...