Programmierung

pushdef und popdef in m4

Normalerweise definiert man in m4 ein Macro mit der define-Funktion. Das kann man aber auch mit Hilfe von pushdef und popdef machen. Hier mal ein Beispeil

define(`test', `Eins')dnl
test
=> Eins
pushdef(`test', `Zwei')dnl
test
=> Zwei
pushdef(`test', `Drei')dnl
pushdef(`test', `Vier')dnl
test
=> Vier
popdef(`test')dnl
test
=> Drei
popdef(`test', `test')dnl
test
=> Eins
popdef(`test', `test')dnl
test
=> test

Wie man an dem Beispiel sehen kann, bekommt das Makro test mit jedem pushdef-Aufruf eine weitere Definition. Ruft man das Makro test auf, dann wird jeweils die letzte „gepushte“ Definition ausgegeben. Mit popdef wird die letzte Definition von dem Makro test entfernt.