EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

m4posix – Online in der Cloud

Führen Sie m4posix im kostenlosen Hosting-Anbieter OnWorks über Ubuntu Online, Fedora Online, den Windows-Online-Emulator oder den MAC OS-Online-Emulator aus

Dies ist der Befehl m4posix, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


m4 – Makroprozessor

ZUSAMMENFASSUNG


m4 [−s] [-D Name[=Welle]]... [-U Name]... Datei...

BESCHREIBUNG


Das m4 Das Dienstprogramm ist ein Makroprozessor, der eine oder mehrere Textdateien liest und verarbeitet
entsprechend den enthaltenen Makroanweisungen und schreiben Sie die Ergebnisse in die Standardausgabe.

OPTIONAL


Das m4 Dienstprogramm muss dem Band der Basisdefinitionen von POSIX.1‐2008 entsprechen, Abschnitt 12.2,
Dienstprogramm Syntax Richtlinien, außer dass die Reihenfolge der -D und -U Optionen sollen sein
von Bedeutung, und Optionen können mit Operanden vermischt werden.

Folgende Optionen sollen unterstützt werden:

−s Aktivieren Sie die Leitungssynchronisationsausgabe für c99 Präprozessorphase (d. h.
#Leitung Richtlinien).

-D Name[=Welle]
Festlegung Name zu Welle oder auf null, wenn =Welle wurde weggelassen.

-U Name Undefinieren Name.

OPERANDEN


Der folgende Operand soll unterstützt werden:

Datei Ein Pfadname einer zu verarbeitenden Textdatei. Wenn nein Datei gegeben ist, oder ob es so ist '-',
Die Standardeingabe soll gelesen werden.

STDIN


Die Standardeingabe muss eine Textdatei sein, die verwendet wird, wenn nein Datei Operand angegeben ist, oder wenn es
is '-'.

SPEISUNG DATEIEN


Die von benannte Eingabedatei Datei Der Operand muss eine Textdatei sein.

VARIABLEN


Die folgenden Umgebungsvariablen sollen die Ausführung von m4:

SPRACHE Geben Sie einen Standardwert für die Internationalisierungsvariablen an, die nicht festgelegt sind oder
Null. (Siehe den Band Basisdefinitionen von POSIX.1‐2008, Abschnitt 8.2,
Internationalisierung Variablen für den Vorrang der Internationalisierung
Variablen, die verwendet werden, um die Werte von Gebietsschemakategorien zu bestimmen.)

LC_ALL Wenn auf einen nicht leeren Zeichenfolgenwert gesetzt, überschreiben Sie die Werte aller anderen
Internationalisierungsvariablen.

LC_CTYPE Bestimmen Sie das Gebietsschema für die Interpretation von Sequenzen von Bytes von Textdaten
als Zeichen (z. B. Einzelbyte- im Gegensatz zu Mehrbyte-Zeichen in
Argumente und Eingabedateien).

LC_MESSAGES
Bestimmen Sie das Gebietsschema, das verwendet werden soll, um das Format und den Inhalt von . zu beeinflussen
Diagnosemeldungen in Standardfehler geschrieben.

NLSPATH Bestimmen Sie den Speicherort von Nachrichtenkatalogen für die Verarbeitung von LC_MESSAGES.

ASYNCHRON Events


Standard.

STDOUT


Die Standardausgabe muss mit den Eingabedateien identisch sein, nachdem sie für das Makro verarbeitet wurde
Erweiterung.

STDERR


Der Standardfehler soll verwendet werden, um Zeichenfolgen mit dem anzuzeigen Fehlerdruck Makro, Makroverfolgung
aktiviert durch die Traceon Makro, der definierte Text für Makros, die von geschrieben werden dumpdef Makro, oder
für Diagnosemeldungen.

AUSGABE DATEIEN


Keiner.

VERLÄNGERT BESCHREIBUNG


Das m4 Das Dienstprogramm vergleicht jedes Token aus der Eingabe mit dem Satz integrierter und
benutzerdefinierte Makros. Wenn das Token mit dem Namen eines Makros übereinstimmt, gilt dies auch für das Token
durch den Definitionstext des Makros (falls vorhanden) ersetzt und erneut nach passenden Makronamen durchsucht.
Sobald kein Teil des Tokens mit dem Namen eines Makros übereinstimmt, wird es in den Standard geschrieben
Ausgang. Makros können Argumente haben. In diesem Fall müssen die Argumente ersetzt werden
den definierenden Text, bevor er erneut gescannt wird.

Makroaufrufe haben die Form:

Name(Arg1, Arg2... Arg)

Makronamen müssen aus Buchstaben, Ziffern und Unterstrichen bestehen, wobei das erste Zeichen steht
ist keine Ziffer. Token, die nicht diese Form haben, werden nicht als Makros behandelt.

Der Antrag stellt sicher, dass die folgt unmittelbar auf den Namen von
das Makro. Wenn auf einen Token, der mit dem Namen eines Makros übereinstimmt, kein a folgt
Klammer> wird als Verwendung dieses Makros ohne Argumente behandelt.

Wenn auf einen Makronamen ein folgt , seine Argumente sind die
-getrennte Token zwischen den und das Passende
Klammer>. Nicht in Anführungszeichen gesetzte Leerzeichen vor jedem Argument werden ignoriert.
Alle anderen Zeichen, einschließlich nachfolgender Leerzeichen, bleiben erhalten.
dazwischen eingeschlossene Zeichen Und Charaktere nicht
Argumente abgrenzen.

Argumente werden positionell definiert und referenziert. Die Saite "$ 1" im Definitionstext
wird durch das erste Argument ersetzt. Systeme müssen mindestens neun Argumente unterstützen;
Mithilfe der Zeichenfolgen kann nur auf die ersten neun verwiesen werden "$ 1" zu "$ 9", inklusive. Der
Schnur "$ 0" wird durch den Namen des Makros ersetzt. Die Saite "$ #" wird ersetzt durch die
Anzahl der Argumente als String. Die Saite „$*“ wird durch eine Liste aller ersetzt
Argumente, getrennt durch Figuren. Die Saite "$@" wird durch eine Liste aller ersetzt
der Argumente getrennt durch Zeichen, und jedes Argument wird mit dem in Anführungszeichen gesetzt
aktuelle linke und rechte Anführungszeichenketten. Die Saite „${“ erzeugt nicht spezifiziertes Verhalten.

Wenn weniger Argumente angegeben werden als in der Makrodefinition, werden die weggelassenen Argumente berücksichtigt
werden als null angenommen. Es handelt sich nicht um einen Fehler, wenn mehr Argumente angegeben werden als im
Makrodefinition.

Den zwischen links und rechts eingeschlossenen Zeichen wird keine besondere Bedeutung beigemessen
Anführungszeichenfolgen, aber die Anführungszeichenfolgen selbst werden verworfen. Standardmäßig links
Die Anführungszeichenfolge besteht aus einem gravierenden Akzent (Backquote) und der rechten Anführungszeichenfolge
besteht aus einem akuten Akzent (einfaches Anführungszeichen); siehe auch die Changequote Makro.

Kommentare werden geschrieben, aber nicht nach passenden Makronamen durchsucht; Standardmäßig ist der Anfang
Die Kommentarzeichenfolge besteht aus Zeichen und die Endkommentarzeichenfolge besteht
von einem . Siehe auch die changecom und dnl Makros.

Das m4 Das Dienstprogramm stellt die folgenden integrierten Makros zur Verfügung. Sie können neu definiert werden,
aber sobald dies geschehen ist, geht die ursprüngliche Bedeutung verloren. Ihre Werte müssen null sein, es sei denn
anders angegeben. In den folgenden Beschreibungen wird der Begriff Definition Text bezieht sich auf den Wert von
das Makro: das zweite Argument zum definieren Makro, unter anderem. Mit Ausnahme der
erstes Argument zum eval Makro, alle numerischen Argumente für integrierte Makros sollen sein
als Dezimalwerte interpretiert. Die Zeichenfolgenwerte, die als definierender Text des erzeugt werden
dekreieren, divnum, inkr, Index, len und sysval Integrierte Makros müssen die Form eines haben
Dezimalkonstante wie in der C-Sprache definiert.

changecom Das changecom Das Makro soll die Zeichenfolgen für den Anfangskommentar und das Ende des Kommentars festlegen. Ohne
Argumente muss der Kommentarmechanismus deaktiviert werden. Mit einem einzelnen Nicht-Null
Argument, dieses Argument wird zum Anfangskommentar und zum soll
wird zur Endkommentarzeichenfolge. Bei zwei Nicht-Null-Argumenten das erste Argument
wird zum Anfangskommentar-String und das zweite Argument wird zum
Endkommentarzeichenfolge. Das Verhalten ist nicht spezifiziert, wenn eines der Argumente angegeben wird
aber null. Systeme müssen Kommentarzeichenfolgen mit mindestens fünf Zeichen unterstützen.

Changequote
Das Changequote Das Makro soll die Zeichenfolgen für das Anfangs-Anführungszeichen und das End-Anführungszeichen festlegen. Ohne
Argumente müssen die Anführungszeichenfolgen auf die Standardwerte (d. h. „“) gesetzt werden.
Das Verhalten ist nicht spezifiziert, wenn ein einzelnes Argument vorhanden ist oder eines der beiden Argumente vorhanden ist
Null. Bei zwei Nicht-Null-Argumenten soll das erste Argument zum Anfangs-Argument werden.
Anführungszeichenfolge und das zweite Argument wird zur Endanführungszeichenfolge. Systeme
muss Anführungszeichenfolgen mit mindestens fünf Zeichen unterstützen.

dekreieren Der definierende Text der dekreieren Das erste Argument des Makros wird um dekrementiert
1. Es ist ein Fehler, ein Argument anzugeben, das einen nicht numerischen Wert enthält
Figuren. Das Verhalten ist nicht spezifiziert, wenn dekreieren folgt nicht unmittelbar
A .

definieren Das zweite Argument soll der definierende Text des Makros werden, dessen Name lautet
das erste Argument. Es ist nicht spezifiziert, ob die definieren Makro löscht alle vorherigen
Definitionen des durch sein erstes Argument benannten Makros oder behält alle außer dem bei
aktuelle Definition des Makros. Das Verhalten ist nicht spezifiziert, wenn definieren ist nicht
unmittelbar gefolgt von a .

definiere Der definierende Text der definiere Das Makro muss die in Anführungszeichen gesetzte Definition sein (unter Verwendung von
aktuelle Anführungszeichenfolgen) seiner Argumente. Das Verhalten ist nicht spezifiziert, wenn definiere
folgt nicht unmittelbar ein a .

umleiten Das m4 Das Dienstprogramm unterhält neun temporäre Puffer, die von 1 bis einschließlich 9 nummeriert sind.
Wenn die letzte Eingabe verarbeitet wurde, werden alle platzierten Ausgaben angezeigt
in diesen Puffern werden in Puffer-numerischer Reihenfolge auf die Standardausgabe geschrieben.
Das umleiten Das Makro soll zukünftige Ausgaben in den von ihm angegebenen Puffer umleiten
Streit. Wenn Sie kein Argument oder ein Argument von 0 angeben, wird der Normalzustand wiederhergestellt
Ausgabeprozess. Die Ausgabe soll in einen Stream mit einer negativen Zahl umgeleitet werden
verworfen. Das Verhalten ist durch die Implementierung definiert, wenn die Stream-Nummer größer als 9 ist
angegeben. Es ist ein Fehler, ein Argument anzugeben, das irgendein Nicht-Argument enthält.
numerische Zeichen.

divnum Der definierende Text der divnum Makro soll die Nummer des aktuellen Ausgangs sein
Stream als String.

dnl Das dnl Makro soll verursachen m4 um alle eingegebenen Zeichen bis einschließlich zu verwerfen
der nächste .

dumpdef Das dumpdef Das Makro soll den definierten Text für jeden der Standardfehler schreiben
als Argumente angegebene Makros oder, wenn keine Argumente angegeben sind, für alle
Makros.

Fehlerdruck Das Fehlerdruck Das Makro soll seine Argumente in den Standardfehler schreiben. Das Verhalten ist
nicht spezifiziert, wenn Fehlerdruck folgt nicht unmittelbar ein a .

eval Das eval Das Makro soll sein erstes Argument als arithmetischen Ausdruck auswerten.
Verwendung vorzeichenbehafteter Ganzzahlarithmetik mit mindestens 32-Bit-Genauigkeit. Zumindest die
Die folgenden C-Sprachoperatoren werden mit Vorrang unterstützt:
Assoziativität und Verhalten wie in beschrieben Abschnitt 1.1.2.1, Arithmetik
Präzision und Einkauf & Prozesse:

()
einstellig +
einstellig -
~

!
binär *
/
%
binär +
binär −
<<
>>
<
<=
>
>=
==
!=
binär &
^
|
&&
||

Systeme müssen Oktal- und Hexadezimalzahlen gemäß der ISO-C-Norm unterstützen.
Das zweite Argument legt, falls angegeben, die Basis für das Ergebnis fest; wenn die
Das Argument ist leer oder nicht angegeben. Der Standardwert ist 10. Das Verhalten ist nicht angegeben, wenn
Die Basis liegt außerhalb des Bereichs von 2 bis einschließlich 36. Das dritte Argument, wenn
angegeben, legt die Mindestanzahl von Ziffern im Ergebnis fest. Verhalten ist
nicht angegeben, wenn das dritte Argument kleiner als Null ist. Es wird ein Fehler sein
Geben Sie das zweite oder dritte Argument an, das alle nicht numerischen Zeichen enthält. Der
Verhalten ist nicht spezifiziert, wenn eval folgt nicht unmittelbar ein a
Klammer>.

wenndef Wenn das erste Argument zum wenndef Makro definiert ist, soll der definierende Text sein
das zweite Argument. Andernfalls ist der definierende Text das dritte Argument.
falls angegeben, oder die Nullzeichenfolge, wenn nicht. Das Verhalten ist nicht spezifiziert, wenn wenndef
folgt nicht unmittelbar ein a .

ansonsten Das ansonsten Makro benötigt drei oder mehr Argumente. Wenn die ersten beiden Argumente
Vergleichen Sie als gleiche Zeichenfolgen (nach Makroerweiterung beider Argumente), die definieren
Text soll das dritte Argument sein. Wenn die ersten beiden Argumente nicht vergleichbar sind mit
Bei gleichen Zeichenfolgen und drei Argumenten muss der definierende Text null sein. Wenn
Die ersten beiden Argumente werden nicht als gleiche Zeichenfolgen verglichen und es gibt vier oder
fünf Argumente, der definierende Text soll das vierte Argument sein. Wenn die ersten beiden
Argumente werden nicht als gleiche Zeichenfolgen verglichen und es gibt sechs oder mehr Argumente.
Die ersten drei Argumente werden verworfen und die Verarbeitung wird mit neu gestartet
die restlichen Argumente. Das Verhalten ist nicht spezifiziert, wenn ansonsten ist nicht
unmittelbar gefolgt von a .

das Der definierende Text für die das Das Makro soll der Inhalt der genannten Datei sein
durch das erste Argument. Es liegt ein Fehler vor, wenn die Datei nicht gelesen werden kann. Der
Verhalten ist nicht spezifiziert, wenn das folgt nicht unmittelbar ein a
Klammer>.

inkr Der definierende Text der inkr Das Makro soll sein erstes Argument sein, das um erhöht wird
1. Es ist ein Fehler, ein Argument anzugeben, das einen nicht numerischen Wert enthält
Figuren. Das Verhalten ist nicht spezifiziert, wenn inkr folgt nicht unmittelbar
A .

Index Der definierende Text der Index Das Makro soll die erste Zeichenposition sein (als
string) im ersten Argument, wobei eine Zeichenfolge beginnt, die mit dem zweiten Argument übereinstimmt
(Null-Ursprung) oder −1, wenn das zweite Argument nicht vorkommt. Das Verhalten ist
nicht spezifiziert, wenn Index folgt nicht unmittelbar ein a .

len Der definierende Text der len Das Makro muss die Länge (als Zeichenfolge) des haben
erstes Argument. Das Verhalten ist nicht spezifiziert, wenn len wird nicht sofort befolgt
durch eine .

m4exit Ausfahrt aus der m4 Dienstprogramm. Wenn das erste Argument angegeben ist, ist es der Ausgang
Code. Der Standardwert ist Null. Es ist ein Fehler, ein Argument anzugeben
Enthält alle nicht numerischen Zeichen.

m4wrap Das erste Argument soll verarbeitet werden, wenn EOF erreicht ist. Wenn die m4wrap Makro
Wird mehrfach verwendet, müssen die angegebenen Argumente in der Reihenfolge verarbeitet werden
in dem die m4wrap Makros wurden verarbeitet. Das Verhalten ist nicht spezifiziert, wenn m4wrap
folgt nicht unmittelbar ein a .

maketemp Der definierende Text muss das erste Argument sein, mit etwaigen Nachstellungen 'X' Zeichen
wird durch die aktuelle Prozess-ID als Zeichenfolge ersetzt. Das Verhalten ist nicht spezifiziert
if maketemp folgt nicht unmittelbar ein a .

mkstemp Das erste Argument soll als Vorlage zum Erstellen einer leeren Datei verwendet werden
schleppend 'X' Zeichen durch Zeichen aus dem portablen Dateinamen ersetzt
Zeichensatz. Das Verhalten ist nicht spezifiziert, wenn das erste Argument nicht auf endet
mindestens sechs 'X' Figuren. Wenn eine temporäre Datei erfolgreich erstellt wurde, dann
Der definierende Text des Makros soll der Name der neuen Datei sein. Die Benutzer-ID
der Datei muss auf die effektive Benutzer-ID des Prozesses gesetzt werden. Die Gruppen-ID
der Datei muss auf die Gruppen-ID des übergeordneten Verzeichnisses der Datei oder auf festgelegt werden
die effektive Gruppen-ID des Prozesses. Die Dateizugriffsberechtigungsbits sind gesetzt
sodass nur der Eigentümer die Datei lesen und schreiben kann, unabhängig von der Datei
Strom umask des Prozesses. Wenn eine Datei nicht erstellt werden konnte, der definierende Text
des Makros soll der leere String sein. Das Verhalten ist nicht spezifiziert, wenn mkstemp
folgt nicht unmittelbar ein a .

popdef Das popdef Das Makro soll die aktuelle Definition seiner Argumente löschen und ersetzen
diese Definition mit der vorherigen. Wenn keine vorherige Definition vorhanden ist, wird die
Makro ist undefiniert. Das Verhalten ist nicht spezifiziert, wenn popdef ist nicht sofort
gefolgt von einem .

pushdef Das pushdef Das Makro muss dem entsprechen definieren Makro mit der Ausnahme
dass jede aktuelle Definition für den zukünftigen Abruf mit dem beibehalten werden soll
popdef Makro. Das Verhalten ist nicht spezifiziert, wenn pushdef wird nicht sofort befolgt
durch eine .

verschieben Der definierende Text für die verschieben Das Makro muss eine durch Kommas getrennte Liste seiner Makros sein
Argumente außer dem ersten. Jedes Argument muss in Anführungszeichen gesetzt werden
Zeichenfolgen zitieren. Das Verhalten ist nicht spezifiziert, wenn verschieben ist nicht sofort
gefolgt von einem .

sinclude Das sinclude Das Makro muss dem entsprechen das Makro, außer dass es
ist kein Fehler, wenn auf die Datei nicht zugegriffen werden kann. Das Verhalten ist nicht spezifiziert
if sinclude folgt nicht unmittelbar ein a .

substr Der definierende Text für die substr Das Makro soll der Teilstring des ersten sein
Argument beginnend an der durch die Sekunde angegebenen Null-Offset-Zeichenposition
Streit. Das dritte Argument, falls angegeben, soll die Anzahl der Zeichen sein
wählen; Falls nicht angegeben, die Zeichen vom Anfangspunkt bis zum Ende von
Das erste Argument soll zum definierenden Text werden. Es soll kein Fehler sein
Geben Sie einen Startpunkt an, der über das Ende des ersten Arguments und der Definition hinausgeht
Der Text soll null sein. Es ist ein Fehler, ein Argument anzugeben, das „any“ enthält
nicht numerische Zeichen. Das Verhalten ist nicht spezifiziert, wenn substr ist nicht
unmittelbar gefolgt von a .

syscmd Das syscmd Das Makro interpretiert sein erstes Argument als Shell-Befehlszeile. Der
Der definierende Text muss das String-Ergebnis dieses Befehls sein. Das String-Ergebnis
darf beim Festlegen des definierenden Textes nicht erneut nach Makros durchsucht werden. Keine Leistung
Die Umleitung erfolgt durch die m4 Dienstprogramm. Der Exit-Statuswert aus dem
Der Befehl kann mit abgerufen werden sysval Makro. Das Verhalten ist nicht spezifiziert, wenn
syscmd folgt nicht unmittelbar ein a .

sysval Der definierende Text der sysval Das Makro soll der Exit-Wert des Dienstprogramms sein
zuletzt aufgerufen von der syscmd Makro (als String).

Traceon Das Traceon Das Makro soll die Ablaufverfolgung für die als Argumente angegebenen Makros ermöglichen.
oder, wenn keine Argumente angegeben sind, für alle Makros. Die Trace-Ausgabe soll sein
in einem nicht spezifizierten Format in den Standardfehler geschrieben.

Traceoff Das Traceoff Das Makro soll die Ablaufverfolgung für die als Argumente angegebenen Makros deaktivieren.
oder, wenn keine Argumente angegeben sind, für alle Makros.

translit Der definierende Text der translit Das Makro soll bei jedem das erste Argument sein
Zeichen, das im zweiten Argument vorkommt, wird durch das entsprechende ersetzt
Zeichen aus dem dritten Argument. Wenn kein Ersatzzeichen angegeben ist
ein Quellzeichen, da das zweite Argument länger als das dritte ist
Argument, dieses Zeichen soll aus dem ersten Argument in gelöscht werden translit's
Text definieren. Das Verhalten ist nicht spezifiziert, wenn das '-' Charakter erscheint im Inneren
das zweite oder dritte Argument an einer beliebigen Stelle außer dem ersten oder letzten Zeichen. Der
Das Verhalten ist nicht spezifiziert, wenn das gleiche Zeichen mehr als einmal im vorkommt
zweites Argument. Das Verhalten ist nicht spezifiziert, wenn translit ist nicht sofort
gefolgt von einem .

undefinieren Das undefinieren Das Makro löscht alle Definitionen (einschließlich derjenigen, die mit gespeichert wurden).
pushdef Makro) der durch seine Argumente benannten Makros. Das Verhalten ist
nicht spezifiziert, wenn undefinieren folgt nicht unmittelbar ein a .

nicht ablenken Das nicht ablenken Das Makro soll die sofortige Ausgabe von Text in temporären Puffern bewirken
als Argumente benannt, oder alle temporären Puffer, wenn keine Argumente angegeben sind.
Puffer können nicht in andere temporäre Puffer umgeleitet werden. Undiverting soll
Verwerfen Sie den Inhalt des temporären Puffers. Das Verhalten ist nicht spezifiziert, wenn ein
Das Argument enthält alle nicht numerischen Zeichen.

EXIT STATUS


Die folgenden Exit-Werte sollen zurückgegeben werden:

0 Erfolgreicher Abschluss.

>0 Es ist ein Fehler aufgetreten

Besitzt das m4exit Wenn ein Makro verwendet wird, kann der Exit-Wert durch die Eingabedatei angegeben werden.

FOLGEN OF FEHLER


Standard.

Das Folgende Abschnitte sind informativ.

Anmeldeformular ANWENDUNG


Das definiere Makro ist nützlich zum Umbenennen von Makros, insbesondere von integrierten Makros.

Da eval lehnt sich an den ISO-C-Standard an, einige Vorgänge weisen ein undefiniertes Verhalten auf. In einigen
Implementierungen, Division oder Rest durch Null führen zu einem fatalen Signal, auch wenn die Division erfolgt
tritt auf dem kurzgeschlossenen Zweig von auf „&&“ or "||". Jeder Vorgang, der überläuft
Vorzeichenbehaftete Arithmetik erzeugt undefiniertes Verhalten. Ebenso mit der verschieben Betreiber mit a
Der Verschiebungsbetrag, der nicht positiv und kleiner als die Genauigkeit ist, ist unverändert undefiniert
eine negative Zahl nach rechts verschieben. Historisch gesehen befolgten nicht alle Implementierungen C-
Regeln zur Vorrangigkeit der Sprache: '~' und '!' niedriger als '=='; '==' und '!=' waren nicht niedriger
als '<'eschriebenen Art und Weise; und '|' war nicht niedriger als '^'; der großzügige Gebrauch von "()" kann das Gewünschte erzwingen
Auch bei diesen nicht konformen Implementierungen haben sie Vorrang. Darüber hinaus einige traditionelle
Implementierungen behandelt '^' als Potenzierungsoperator, obwohl die meisten Implementierungen
jetzt benutzen „**“ als Erweiterung zu diesem Zweck.

Wenn ein Makro über das multipliziert definiert wurde pushdef Makro, es ist nicht spezifiziert, ob
definieren Das Makro ändert nur die aktuellste Definition (als ob durch popdef und
pushdef) oder den gesamten Definitionsstapel durch eine einzelne Definition ersetzen (als ob
by undefinieren und pushdef). Eine Anwendung, die ein bestimmtes Verhalten für die wünscht definieren
Das Makro kann es in diesem Fall entsprechend neu definieren.

Anwendungen sollten die verwenden mkstemp Makro statt Veraltetes maketemp Makro für
Erstellen temporärer Dateien.

Beispiele:


Wenn die Datei m4src enthält die Zeilen:

Das Wert of „VER“ is „VER“.
ifdef(`VER', „VER“ is definiert zu be VER., VER is nicht definiert.)
ifelse(VER, 1, „VER“ is „VER“.)
ifelse(VER, 2, „VER“ is „VER“., „VER“ is nicht 2.)
Ende

dann der befehl

m4 m4src

oder der Befehl:

m4 -U VER m4src

erzeugt die Ausgabe:

Das Wert of VER is „VER“.
VER is nicht definiert.

VER ist nicht 2.
Ende

Der Befehl:

m4 -D VER m4src

erzeugt die Ausgabe:

Das Wert of VER is "".
VER is definiert zu be .

VER ist nicht 2.
Ende

Der Befehl:

m4 -D VER=1 m4src

erzeugt die Ausgabe:

Das Wert of VER is "1".
VER is definiert zu be 1.
VER is 1.
VER is nicht 2.
Ende

Der Befehl:

m4 -D VER=2 m4src

erzeugt die Ausgabe:

Das Wert of VER is "2".
VER is definiert zu be 2.

VER ist 2.
Ende

RATIONALE


Historisches System V-basiertes Verhalten behandelt „${“ in einer Makrodefinition als zwei Literale
Figuren. Diese Reihenfolge wird jedoch nicht spezifiziert, sodass sich Implementierungen möglicherweise anbieten
Erweiterungen wie z.B „${11}“ was den elften Positionsparameter bedeutet. Makros können immer noch sein
definiert mit geeigneter Verwendung verschachtelter Anführungszeichen, um ein Literal zu ergeben „${“ in der Ausgabe
Nach dem erneuten Scannen werden die verschachtelten Anführungszeichen entfernt.

Im translit Integriertes, historisches System V-basiertes Verhalten behandelt '-' als wörtlich; GNU
Das Verhalten behandelt es als einen Bereich. Diese Version des Standards erlaubt beide Verhaltensweisen.

ZUKUNFT RICHTUNGEN


Keiner.

Nutzen Sie m4posix online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad