Dies ist der Befehl shtool-scpp, 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
shtool-scpp – GNU shtool C-Quelldatei-Präprozessor
ZUSAMMENFASSUNG
Werkzeug scpp [-v|- ausführlich] [-p|--bewahren] [-f|--Filter Filter] [-o|--Ausgabe ofil]
[-t|--Vorlage tfile] [-M|--Markierung Kennzeichen] [-D|--definieren Name] [-C|--Klasse cname] Datei [Datei
...]
BESCHREIBUNG
Dieser Befehl ist ein zusätzlicher ANSI-C-Quelldatei-Präprozessor für die gemeinsame Nutzung cpp(1) Code
Segmente, interne Variablen und interne Funktionen. Die Absicht hierfür ergibt sich aus
Schreiben von Bibliotheken in ANSI C. Hier wird normalerweise eine gemeinsame gemeinsame interne Header-Datei verwendet
Austausch von Informationen zwischen den Quelldateien der Bibliothek.
Die Operation besteht darin, spezielle Konstrukte einzuparsten Dateis, generieren Sie daraus ein paar Dinge
Konstrukte und fügen sie an der Position ein Kennzeichen in tfile durch Schreiben der Ausgabe auf ofil.
Zusätzlich die Dateis werden niemals berührt oder verändert. Stattdessen werden die Konstrukte entfernt
später von der cpp(1) Phase des Build-Prozesses. Die einzige Voraussetzung ist, dass jeder Datei
hat ein „#include“ofil"""'' oben.
Dieser Befehl bietet die folgenden Funktionen: Erstens vermeidet er Namespace-Verschmutzung und
Reduziert den Prototyping-Aufwand für interne Symbole durch die Erkennung von Funktionen und Variablen
die mit der Speicherklassenkennung „“ definiert sindcname''. Zum Beispiel wenn cname is
„intern“, eine Funktion „intern void *foobar(int quux)““ in einer der Dateis ist
übersetzt in sowohl ein „#define foobar __foobar““ als auch ein „extern void *foobar(int
quux);"'' in ofil. Zusätzlich ein globales „#define“ cname „/**/“'' wird ebenfalls in erstellt
ofil Damit der Compiler diese zusätzliche Speicherklassenkennung stillschweigend ignorieren kann.
Zweitens möchten die Quelldateien der Bibliothek normalerweise „typedefs“, „#define“s usw. gemeinsam nutzen
die Grenzen der Quelldatei. Um dies zu erreichen, kann man dieses Zeug entweder manuell einfügen
tfile oder nutzen Sie die zweite Funktion von scpp: Der gesamte Code ist enthalten Dateis gekapselt mit „#if“Name
... „#endif““ wird automatisch kopiert ofil. Zusätzlich ein globales „#define“ Name
0'' wird ebenfalls erstellt ofil um den Compiler diese Teile stillschweigend überspringen zu lassen (weil es so war).
bereits im Header zu finden).
OPTIONAL
Die folgenden Befehlszeilenoptionen sind verfügbar.
-v, - ausführlich
Zeigen Sie einige Verarbeitungsinformationen an.
-p, --bewahren
Konserven ofil unabhängig von den generierten „#line“-Zeilen. Dies ist nützlich für
Makefiles, wenn der tatsächliche Inhalt von ofil ändert sich nicht, nur die Zeilennummern. Standard ist
überschreiben.
-f, --Filter Filter
Wenden Sie eine oder mehrere Vorverarbeitungen an Durst(1) Filter Befehle (normalerweise vom Typ
„s/.../.../“'') in jede Eingabedatei einfügen, bevor deren Eingabe analysiert wird. Diese Option kann
kommen mehrfach vor.
-o, --Ausgabe ofil
Name der Ausgabedatei. Der Standardwert ist „lib.h“.
-t, --Vorlage tfile
Name der Vorlagendatei. Der Standardwert ist „lib.h.in“.
-M, --Markierung Kennzeichen
Markieren Sie, dass durch generierte Konstrukte ersetzt werden sollen. Der Standardwert ist „%%MARK%%“.
-D, --definieren Name
FIXME. Der Standardwert ist „cpp“.
-C, --Klasse cname
FIXME. Der Standardwert ist „intern“.
BEISPIEL
# Makefile
SRCS=foo_bar.c foo_quux.c
foo_p.h: foo_p.h.in
shtool scpp -o foo_p.h -t foo_p.h.in \
-M %%MARK%% -D cpp -C intern $(SRCS)
/* foo_p.h.in */
#ifndef FOO_P_H
#define FOO_P_H
%%MARKIEREN%%
#endif /* FOO_P_H */
/* foo_bar.c */
#include „foo_p.h“
#if cpp
#define OURS_INIT 4711
#endif
Praktikant bei uns;
static int myone = 0815;
Praktikant int bar(void)
{
unser += mein;
}
/* foo_quux.c */
#include „foo_p.h“
int main(int argc, char *argv[])
{
int i;
ours = OURS_INIT
für (i = 0; i < 10; i++) {
Bar();
printf("unseres jetzt %d\n", unsers);
}
Rückkehr 0;
}
HISTORIEN
Die GNU Werkzeug scpp Befehl wurde ursprünglich von Ralf S. Engelschall geschrieben
<[E-Mail geschützt] > 1999 für GNU Werkzeug. Der Grund dafür war die Notwendigkeit, eine Vor-
Verarbeitungsanlage in der GNU pth Projekt einfliessen.
Verwenden Sie shtool-scpp online über die Dienste von onworks.net