Autoconf
循環通過 m4 的 dumpdef
是否可以遍歷給出的宏名稱列表
dumpdef
?我想處理某些名稱中有特定前綴的宏。
dumpdef
將宏列表及其定義寫入文件。在標準 m4中,該文件是標準錯誤,因此獲得它的唯一方法是使用 m4 腳本外部的重定向。GNU m4 提供了debugfile
將輸出重定向到可以用 讀回的文件的宏input
,但您不能依賴 autoconf 中 m4 的特定實現。即使您設法從 中獲取輸出
dumpdef
,也未指定輸出的格式。您可以使用index
andsubstr
將字元串分成幾行,但假設實現每行列印一個宏,這不能保證;此外,宏值可以包含換行符。使用 GNU m4,輸出是模棱兩可的:你無法區分define(`foo', `hello') define(`fooo', `world')
從
define(`foo', `hello fooo: world')
假設 m4 實現每行列印一個宏並在名稱後面加上冒號,您可以通過這種方式收集潛在的宏名稱並用於
ifdef
檢查它們是否確實是宏名稱。但是您受制於不使用相同調試列印格式的實現。解決問題的最佳方法可能在 m4 之外。