2012-11-22 88 views
2

我想使用m4來做一些類型保存的東西,所以這個循環肯定是需要的。當我閱讀m4文檔時,在第6章中有6.46.5用於迭代。但它看起來像foreach不是一個內置的宏(複合?),我怎麼能使用它?在這個例子中,他們援引m4-I examples選項,include('foreach.m4'),但該文件似乎不存在誤差爲:什麼是M4複合宏,像foreach?

cannot open `foreach.m4': No such file or directory 

任何幫助表示讚賞!

+0

不是'M4'明確提供'foreach',還是需要用戶自己寫? –

+0

不,它不包含:手冊提供了一個複合(閱讀:理論行爲的例子,以及如何稱它爲「foreach」),但並未真正提供一個「foreach」結構。 –

回答

2

您必須使用全路徑作爲參數-I(或相對路徑,但必須指定的目錄)。請注意,示例目錄並不總是與m4一起安裝(使用RedHat分發的m4-1.4.1 rpm不包含examples目錄。)最簡單的方法是解壓縮m4 tarball並使用它。 (例如,解壓壓縮包中/tmp和運行m4 -I/tmp/m4-1.4.11/examples

還要注意的是-I是M4非標準選項,所以一定要確保你實際上是使用一個版本的m4支持這樣的說法。 (例如,gnu-m4

+0

謝謝威廉!我想知道這背後的理由是什麼? –

+1

我真的不確定爲什麼不,但據我所知,'m4'只是看不到除''以外的任何默認目錄。因爲'-I'是非標準的,它不會傷害任何東西補丁提交一個補丁提供該功能的gnu-m4。 –