<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=M4_%28Programmiersprache%29</id>
	<title>M4 (Programmiersprache) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=M4_%28Programmiersprache%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=M4_(Programmiersprache)&amp;action=history"/>
	<updated>2026-05-31T11:36:56Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=M4_(Programmiersprache)&amp;diff=672579&amp;oldid=prev</id>
		<title>imported&gt;Ath am 25. Januar 2026 um 09:16 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=M4_(Programmiersprache)&amp;diff=672579&amp;oldid=prev"/>
		<updated>2026-01-25T09:16:42Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{SEITENTITEL:m4 (Programmiersprache)}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;m4&amp;#039;&amp;#039;&amp;#039; ist eine [[Makro]]-[[Programmiersprache]], die von [[Brian Kernighan]] und [[Dennis Ritchie]] entwickelt wurde.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Ein [[Makroprozessor]] ist ein Computerprogramm, das Zeichenfolgen innerhalb eines Textes durch andere Zeichenfolgen ersetzt. Es ermöglicht z.&amp;amp;nbsp;B. die Erstellung und Benutzung von wiederverwertbaren Textbausteinen in Textverarbeitungsprogrammen.&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
Makroprozessoren waren weit verbreitet, als Computerprogramme noch hauptsächlich in [[Assemblersprache|Assembler]] geschrieben wurden. In diesen Anfangstagen der Computertechnik mussten Programmierer häufig immer wiederkehrende Textpassagen in ihren Programmen verwenden. Bald fing man an, einfache Möglichkeiten zu entwickeln, Text wiederzuverwenden. Schnell stellte sich heraus, dass man nicht nur ganze Textpassagen wiederverwenden konnte, sondern bei Bedarf auch einzelne Teile davon ersetzen und so komplexe [[Makro]]s schreiben konnte. M4 wurde 1977 entwickelt. Es war die erste Makrosprache, mit der Rational Fortran ([[Ratfor]]) implementiert wurde, und ist heute Bestandteil der meisten [[Unix]]-Varianten. Ein Hauptanwendungsgebiet ist heutzutage das [[autoconf]]-Tool des [[GNU]]-Projektes. Darüber hinaus wird es auch für die Konfiguration des weit verbreiteten [[Mail Transfer Agent|MTA]] [[sendmail]] verwendet.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
M4 bietet folgende Funktionen:&lt;br /&gt;
*Ersetzen von Text&lt;br /&gt;
*Substituieren von Parametern&lt;br /&gt;
*Einfügen von Dateien&lt;br /&gt;
*Manipulation von Zeichenketten&lt;br /&gt;
*Bedingte Ausdrücke&lt;br /&gt;
*Arithmetische Ausdrücke&lt;br /&gt;
*Schnittstelle zum Betriebssystem&lt;br /&gt;
*Diagnosemöglichkeiten für den Programmierer&lt;br /&gt;
&lt;br /&gt;
Anders als die meisten früheren Makroprozessoren ist M4 nicht auf irgendeine spezielle (Computer- oder menschliche) Sprache ausgelegt; historisch wurde es jedoch entwickelt, um den [[Ratfor]]-Dialekt von [[Fortran]] zu unterstützen. Darüber hinaus ist M4 nicht nur [[Turing-Vollständigkeit|Turing-vollständig]], sondern auch praktisch eine Programmiersprache.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Das nachfolgende Codefragment ist ein einfaches Beispiel, das z.&amp;amp;nbsp;B. als Teil einer [[HTML]]-Bibliothek verwendet werden kann. Es definiert ein Makro, welches Kapitel automatisch nummeriert:&lt;br /&gt;
&lt;br /&gt;
 divert(-1)&lt;br /&gt;
 define(`H2_COUNT&amp;#039;, 0)&lt;br /&gt;
 define(`H2&amp;#039;, `define(`H2_COUNT&amp;#039;, incr(H2_COUNT))&amp;#039; dnl&lt;br /&gt;
   `&amp;amp;lt;h2&amp;amp;gt;H2_COUNT. $1&amp;amp;lt;/h2&amp;amp;gt;&amp;#039;)&lt;br /&gt;
 divert(1)dnl&lt;br /&gt;
&lt;br /&gt;
 H2(Erstes Kapitel)&lt;br /&gt;
 H2(Zweites Kapitel)&lt;br /&gt;
 H2(Schluss)&lt;br /&gt;
&lt;br /&gt;
M4 erzeugt daraus den folgenden Text:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h2&amp;gt;1. Erstes Kapitel&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h2&amp;gt;2. Zweites Kapitel&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h2&amp;gt;3. Schluss&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Freie Implementierungen ==&lt;br /&gt;
Es gibt eine [[GNU]]-Version von m4. [[FreeBSD]], [[NetBSD]] und [[OpenBSD]] liefern darüber hinaus eigene Implementierungen der M4-Sprache.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
*Brian W. Kernighan and Dennis M. Ritchie: &amp;#039;&amp;#039;The M4 macro processor. Technical report&amp;#039;&amp;#039;, Bell Laboratories, Murray Hill, New Jersey, USA, 1977.&amp;lt;ref&amp;gt;http://wolfram.schneider.org/bsd/7thEdManVol2/m4/m4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Kenneth J. Turner: &amp;#039;&amp;#039;Exploiting the m4 macro language. Technical Report CSM-126&amp;#039;&amp;#039;, Department of Computing Science and Mathematics, University of Stirling, Scotland, September 1994.&amp;lt;ref&amp;gt;http://www.cs.stir.ac.uk/~kjt/research/pdf/expl-m4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
*René Seindal: &amp;#039;&amp;#039;GNU M4 Manual&amp;#039;&amp;#039;. GNU Press 2004.&amp;lt;ref&amp;gt;http://www.gnu.org/software/m4/manual/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{man||m4|posix|macro processor}}&lt;br /&gt;
* [http://www.gnu.org/software/m4/m4.html GNU m4] auf GNU.org&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{SORTIERUNG:M4}}&lt;br /&gt;
[[Kategorie:Programmiersprache]]&lt;br /&gt;
[[Kategorie:Unix-Software]]&lt;br /&gt;
[[Kategorie:GNU Core Utilities]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Ath</name></author>
	</entry>
</feed>