shtool-scpp - Online în cloud

Aceasta este comanda shtool-scpp care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

PROGRAM:

NUME


shtool-scpp - pre-procesor pentru fișierul sursă GNU shtool C

REZUMAT


shtool scpp [-v|--verbos] [-p|--păstrați] [-f|--filtru filtru] [-o|--ieșire ofile]
[-t|--șablon tfile] [-M|--marcă marca] [-D|--defini dname] [-C|--clasă cname] fişier [fişier
...]

DESCRIERE


Această comandă este un pre-procesor suplimentar pentru fișierul sursă ANSI C pentru partajare cpp(1) cod
segmente, variabile interne și funcții interne. Intenția pentru aceasta vine de la
scrierea bibliotecilor în ANSI C. Aici se folosește de obicei un fișier antet intern comun partajat pentru
partajarea informațiilor între fișierele sursă din bibliotecă.

Operația este de a analiza constructe speciale în fişiers, generează câteva lucruri din acestea
constructii si introduceti-le la pozitie marca in tfile prin scrierea ieșirii în ofile.
În plus, fişiernu sunt niciodată atinse sau modificate. În schimb, constructele sunt eliminate
mai târziu de către cpp(1) faza procesului de construire. Singura condiție este ca fiecare fişier
are un ``"#include ""ofile"""'' în vârf.

Această comandă oferă următoarele caracteristici: În primul rând, evită poluarea spațiului de nume și
reduce eforturile de prototipare a simbolurilor interne prin recunoașterea funcțiilor și variabilelor
care sunt definite cu identificatorul clasei de stocare ``cname''. De exemplu dacă cname is
``intern'', o funcție ``"intern void *foobar(int quux)"'' într-una dintre fişiers este
tradus atât într-un ``"#define foobar __foobar"'' cât și într-un ``"extern void *foobar(int
quux);"'' in ofile. În plus, un ``"#define" global cname „/**/”’’ este, de asemenea, creat în
ofile pentru a permite compilatorului să ignore în tăcere acest identificator suplimentar de clasă de stocare.

În al doilea rând, fișierele sursă din bibliotecă doresc de obicei să partajeze „typedef”, „#define” etc.
limitele fișierului sursă. Pentru a realiza acest lucru, puteți plasa aceste lucruri manual în
tfile sau utilizați a doua caracteristică a scpp: Toate codurile introduse fişiereste încapsulat cu ``"#if"dname
... „#endif”'' este copiat automat în ofile. În plus, un ``"#define" global dname
0'' este de asemenea creat în ofile pentru a lăsa compilatorul să sară peste aceste părți (pentru că a fost
găsit deja în antet).

OPŢIUNI


Următoarele opțiuni de linie de comandă sunt disponibile.

-v, --verbos
Afișează unele informații de procesare.

-p, --păstrați
Conserve ofile independent de liniile ``#line'' generate. Acest lucru este util pentru
Makefiles dacă conținutul real al ofile nu se va schimba, doar numerele de linie. Implicit este
a suprascrie.

-f, --filtru filtru
Aplicați una sau mai multe preprocesare sete(1) filtru comenzi (de obicei de tip
``"s/.../.../"'') la fiecare fișier de intrare înainte ca intrarea lor să fie analizată. Această opțiune poate
apar de mai multe ori.

-o, --ieșire ofile
Numele fișierului de ieșire. Implicit este „lib.h”.

-t, --șablon tfile
Nume fișier șablon. Implicit este „lib.h.in”.

-M, --marcă marca
Marcați pentru a fi înlocuit cu constructe generate. Implicit este „%%MARK%%”.

-D, --defini dname
FIXME. Implicit este „cpp”.

-C, --clasă cname
FIXME. Implicit este „intern”.

EXEMPLU


# 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
%%MARCĂ%%
#endif /* FOO_P_H */

/* foo_bar.c */
#include „foo_p.h”
#dacă cpp
#define OURS_INIT 4711
#endif
intern în al nostru;
static int myone = 0815;
intern int bar(void)
{
al nostru += myone;
}

/* foo_quux.c */
#include „foo_p.h”
int main(int argc, char *argv[])
{
int i;
nostru = OURS_INIT
pentru (i = 0; i < 10; i++) {
bar();
printf("al nostru acum %d\n", al nostru);
}
0 reveni;
}

ISTORIE


GNU shtool scpp comanda a fost scrisă inițial de Ralf S. Engelschall
<rse@engelschall.com> în 1999 pentru GNU shtool. A fost determinată de necesitatea de a avea un pre-
unitatea de procesare din GNU PTH proiect.

Utilizați shtool-scpp online folosind serviciile onworks.net



Cele mai recente programe online Linux și Windows