2009-10-27 31 views

回答

7
GNU M4 1.4.13 macro processor手動

8.1 Deleting whitespace in input

的內置dnl代表「放棄到下一行」:

- 內建:DNL

所有字符,直到幷包括下一個換行符被放棄而不執行任何宏擴展。如果在沒有換行符的情況下遇到文件末尾,則會發出警告。

dnl的擴展是無效的。

它通常與define結合使用,以刪除跟在呼叫define之後的換行符。因此

define(`foo', `Macro `foo'.')dnl A very simple macro, indeed. 
    foo 
    ⇒Macro foo. 

輸入至多幷包括下一個新行被丟棄,而不是註釋的處理方式(見Comments)。

[...]

2

IIRC,dnldo-next-line。它只是跳過當前行的其餘部分。這是你如何在M4文件中寫評論。

dnl preprocessor will eat this 
but not this dnl though this 

將產生的結果文檔

but not this 

(未經檢驗,也可能會殺了空閒進程崩潰或硬盤)。