cpp-6 - Online în cloud

Aceasta este comanda cpp-6 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


cpp - Preprocesorul C

REZUMAT


cpp [-Dmacro[=defn]...] [-Umacro]
[-Idir...] [-citezdir...]
[-Wavertiza...]
[-M|-MM] [-MG] [-MF nume de fișier]
[-MP] [-MQ ţintă...]
[-MT ţintă...]
[-P] [-fno-director-de-lucru]
[-x limbă] [-std=standard]
infile outfile

Aici sunt enumerate doar cele mai utile opțiuni; vezi mai jos pentru restul.

DESCRIERE


Preprocesorul C, adesea cunoscut ca cpp, Este un macro procesor care este folosit automat de
compilatorul C pentru a vă transforma programul înainte de compilare. Se numește macro
procesor deoarece vă permite să definiți macro-uri, care sunt abrevieri scurte pentru mai mult timp
constructe.

Preprocesorul C este destinat să fie utilizat numai cu codul sursă C, C++ și Objective-C.
În trecut, a fost abuzat ca procesor general de text. Se va sufoca la intrare care
nu se supune regulilor lexicale ale lui C. De exemplu, apostrofele vor fi interpretate ca
începutul constantelor caracterelor și provoacă erori. De asemenea, nu te poți baza pe el
păstrarea caracteristicilor de intrare care nu sunt semnificative pentru limbajele din familia C.
Dacă un Makefile este preprocesat, toate filele dure vor fi eliminate, iar Makefile-ul va fi
nu funcționează.

Acestea fiind spuse, puteți scăpa de multe ori folosind cpp pe lucruri care nu sunt C. Altele
Limbajele de programare Algolish sunt adesea sigure (Pascal, Ada etc.) La fel și asamblarea, cu
prudență. -traditional-cpp modul păstrează mai mult spațiu alb și, în rest, este mai mult
permisiv. Multe dintre probleme pot fi evitate scriind comentarii în stil C sau C++
în loc de comentarii în limba maternă și păstrarea macrocomenzilor simple.

Ori de câte ori este posibil, ar trebui să utilizați un preprocesor adaptat limbii pe care o scrieți
in. Versiunile moderne ale asamblatorului GNU au facilitati macro. Cel mai înalt nivel
limbajele de programare au propriul mecanism condiționat de compilare și includere. Dacă
toate celelalte nu reușesc, încercați un adevărat procesor de text general, cum ar fi GNU M4.

Preprocesoarele C variază în unele detalii. Acest manual discută despre preprocesorul GNU C, care
oferă un mic supraset al caracteristicilor standardului ISO C. În modul său implicit, GNU
Preprocesorul C nu face câteva lucruri cerute de standard. Acestea sunt caracteristici
care sunt rar, dacă vreodată, utilizate și pot provoca modificări surprinzătoare ale sensului a
program care nu le așteaptă. Pentru a obține standardul ISO C strict, ar trebui să utilizați
-std=c90, -std=c99 or -std=c11 opțiuni, în funcție de versiunea standardului dvs
vrei. Pentru a obține toate diagnosticele obligatorii, trebuie să utilizați și -pedant.

Acest manual descrie comportamentul preprocesorului ISO. Pentru a minimiza gratuit
diferențe, în care comportamentul preprocesorului ISO nu intră în conflict cu cel tradițional
semantică, preprocesorul tradițional ar trebui să se comporte în același mod. Diversele
diferențele care există sunt detaliate în secțiune Tradiţional mod.

Pentru claritate, dacă nu se menționează altfel, trimiteri la CPP în acest manual, consultați GNU CPP.

OPŢIUNI


Preprocesorul C așteaptă două nume de fișiere ca argumente, infile si outfile.
preprocesorul citește infile împreună cu orice alte fișiere cu care se specifică #include. Toate
ieșirea generată de fișierele de intrare combinate este scrisă outfile.

Fie infile or outfile poate fi -, care ca infile înseamnă a citi din intrarea standard și
as outfile înseamnă a scrie la ieșirea standard. De asemenea, dacă oricare fișier este omis, înseamnă
la fel ca și cum - fusese specificat pentru acel dosar.

Dacă nu se menționează altfel, sau opțiunea se termină în =, toate opțiunile care iau un argument pot
să apară acel argument fie imediat după opțiune, fie cu un spațiu între
opțiune și argument: -Dacă si -I foo au același efect.

Multe opțiuni au nume cu mai multe litere; prin urmare, mai multe opțiuni cu o singură literă pot nu be
grupate: -dM este foarte diferit de -d -M.

-D nume
Predefinit nume ca macro, cu definiția 1.

-D nume=definiție
Conținutul definiție sunt tokenizate și procesate ca și cum ar fi apărut în timpul
faza de traducere trei în a #defini directivă. În special, definiția va fi
trunchiată de caractere încorporate în noua linie.

Dacă invocați preprocesorul dintr-un shell sau un program asemănător shell-ului de care aveți nevoie
pentru a utiliza sintaxa de ghilimele shell-ului pentru a proteja caractere precum spațiile care au a
sens în sintaxa shell.

Dacă doriți să definiți o macrocomandă asemănătoare unei funcții pe linia de comandă, scrieți argumentul acesteia
listă cu paranteze înconjurătoare înainte de semnul egal (dacă există). Parantezele sunt
semnificativ pentru majoritatea shell-urilor, așa că va trebui să citați opțiunea. Cu sh si csh,
-D'nume(argumente...)=definiție' funcționează.

-D si -U opțiunile sunt procesate în ordinea în care sunt date pe linia de comandă. Toate
-imacros fişier si -include fişier opțiunile sunt procesate până la urmă -D si -U opțiuni.

-U nume
Anulați orice definiție anterioară a nume, fie încorporat, fie prevăzut cu a -D opțiune.

-undef
Nu predefiniți macrocomenzi specifice sistemului sau specifice GCC. Standardul predefinit
macrourile rămân definite.

-I dir
Adăugați directorul dir la lista directoarelor de căutat pentru fișierele antet.

Directoare numite de -I sunt căutate înainte ca sistemul standard să includă directoare.
Dacă directorul dir este un director standard de includere a sistemului, opțiunea este ignorată
asigurați-vă că ordinea implicită de căutare pentru directoarele de sistem și tratamentul special
din anteturile sistemului nu sunt învinse. Dacă dir începe cu „=", apoi „=" va fi
înlocuit cu prefixul sysroot; vedea --sysroot si -isysroot.

-o fişier
Scrie ieșire în fişier. Aceasta este la fel cu specificarea fişier ca a doua non-opțiune
argument pentru cpp. gcc are o interpretare diferită a unui al doilea argument fără opțiune,
deci trebuie sa folosesti -o pentru a specifica fișierul de ieșire.

-Perete
Activează toate avertismentele opționale care sunt de dorit pentru codul normal. În prezent aceasta
is -Wcomentează, - Trigrafii, -Wmultichar și un avertisment despre promovarea numărului întreg care provoacă a
schimbarea semnului în expresiile „#if”. Rețineți că multe dintre avertismentele preprocesorului
sunt activate în mod implicit și nu au opțiuni pentru a le controla.

-Wcomentează
-Wcomentarii
Avertizați de fiecare dată când începe o secvență de comentarii /* apare într-o /* comentariu sau ori de câte ori a
backslash-newline apare într-un // cometariu. (Ambele forme au același efect.)

- Trigrafii
Majoritatea trigrafelor din comentarii nu pot afecta sensul programului. Cu toate acestea, a
trigraf care ar forma o linie nouă scăpată (??/ la capătul unei linii) poate, de
schimbând locul în care începe sau se termină comentariul. Prin urmare, doar trigrafe care s-ar forma
liniile noi scăpate produc avertismente în interiorul unui comentariu.

Această opțiune este implicată de -Perete. Dacă -Perete nu este dat, această opțiune este încă activată
cu excepția cazului în care trigrafurile sunt activate. Pentru a obține conversia trigraf fără avertismente, dar obțineți
celălalt -Perete avertismente, utilizare -trigrafe -Perete -Wno-trigrafe.

- Tradițional
Avertizați asupra anumitor constructe care se comportă diferit în tradițional și ISO C. De asemenea
avertizează despre constructele ISO C care nu au echivalent C tradițional și problematice
constructe care ar trebui evitate.

-Wundef
Avertizați de fiecare dată când un identificator care nu este o macrocomandă este întâlnit într-un #dacă directivă,
in afara de definit. Astfel de identificatori sunt înlocuiți cu zero.

-Wunused-macro-uri
Avertizați despre macrocomenzile definite în fișierul principal care nu sunt utilizate. O macro este utilizat dacă este
extins sau testat pentru existență cel puțin o dată. Preprocesorul va avertiza, de asemenea, dacă
macrocomanda nu a fost utilizată în momentul în care este redefinită sau nedefinită.

Macrocomenzi încorporate, macrocomenzi definite pe linia de comandă și macrocomenzi definite în include
fișierele nu sunt avertizate.

Notă: Dacă o macrocomandă este de fapt utilizată, dar este folosită numai în blocurile condiționale ignorate, atunci
CPP îl va raporta ca neutilizat. Pentru a evita avertismentul într-un astfel de caz, s-ar putea să vă îmbunătățiți
domeniul de aplicare al definiției macrocomenzii, de exemplu, mutându-l în primul omis
bloc. Alternativ, puteți oferi o utilizare inactivă cu ceva de genul:

#dacă este definită_macro_causing_the_warning
#endif

-Wendif-etichete
Avertizați ori de câte ori un #altfel sau un #endif sunt urmate de text. Acest lucru se întâmplă de obicei în
codul formularului

#dacă FOO
...
#altfel FOO
...
#endif FOO

Al doilea și al treilea „FOO” ar trebui să fie în comentarii, dar adesea nu sunt în programe mai vechi.
Acest avertisment este activat în mod implicit.

-Eroare
Transformă toate avertismentele în erori grele. Codul sursă care declanșează avertismente va fi
respins.

-Wsystem-anteturi
Emiteți avertismente pentru codul din anteturile sistemului. Acestea sunt în mod normal inutile pentru a găsi
erori în propriul cod, prin urmare suprimate. Dacă sunteți responsabil pentru sistem
bibliotecă, poate doriți să le vedeți.

-w Suprimați toate avertismentele, inclusiv cele pe care GNU CPP le emite în mod implicit.

-pedant
Emiteți toate diagnosticele obligatorii enumerate în standardul C. Unii dintre ei au rămas
în mod implicit, deoarece se declanșează frecvent pe cod inofensiv.

-pedant-erori
Emiteți toate diagnosticele obligatorii și transformați toate diagnosticele obligatorii în erori.
Aceasta include diagnostice obligatorii fără care GCC emite -pedant dar tratează ca
Avertizări.

-M În loc să scoateți rezultatul preprocesării, scoateți o regulă potrivită pentru face
descriind dependențele fișierului sursă principal. Preprocesorul scoate unul
face regula care conține numele fișierului obiect pentru acel fișier sursă, două puncte și numele
dintre toate fișierele incluse, inclusiv cele care provin din -include or -imacros comanda-
opțiuni de linie.

Dacă nu este specificat în mod explicit (cu -MT or -MQ), numele fișierului obiect este format din
numele fișierului sursă cu orice sufix înlocuit cu sufixul fișierului obiect și cu oricare
părțile directorului principal eliminate. Dacă sunt multe fișiere incluse, atunci regula este
împărțit în mai multe linii folosind -linie nouă. Regula nu are comenzi.

Această opțiune nu suprimă ieșirea de depanare a preprocesorului, cum ar fi -dM. A evita
amestecând astfel de rezultate de depanare cu regulile de dependență, ar trebui să specificați în mod explicit
fișier de ieșire a dependenței cu -MF, sau utilizați o variabilă de mediu precum
DEPENDENCE_OUTPUT. Ieșirea de depanare va fi trimisă în continuare către fluxul de ieșire obișnuit ca
normale.

Care trece -M către șofer implică -E, și suprimă avertismentele cu un implicit -w.

-MM Aprecieri -M dar nu menționați fișierele antet care se găsesc în directoarele antet de sistem,
nici fișierele de antet care sunt incluse, direct sau indirect, dintr-un astfel de antet.

Aceasta implică faptul că alegerea parantezelor unghiulare sau ghilimele duble într-un #include
directiva nu determină în sine dacă acel antet va apărea în -MM
ieșire de dependență. Aceasta este o ușoară schimbare în semantică față de GCC versiunile 3.0 și
mai devreme.

-MF fişier
Când este utilizat cu -M or -MM, specifică un fișier în care să scrieți dependențele. Daca nu -MF
comutatorul este dat, preprocesorul trimite regulile în același loc în care ar fi trimis
ieșire preprocesată.

Când este utilizat cu opțiunile de driver -MD or -MMD, -MF suprascrie dependența implicită
fisier de iesire.

-MG În combinație cu o opțiune precum -M solicitând generarea de dependență, -MG presupune
fișierele de antet lipsă sunt fișiere generate și le adaugă la lista de dependențe fără
ridicând o eroare. Numele fișierului dependenței este preluat direct din „#include”
directivă fără a preda vreo cale. -MG de asemenea, suprimă ieșirea preprocesată, ca a
lipsa fișierului antet face acest lucru inutil.

Această caracteristică este utilizată în actualizarea automată a fișierelor make.

-MP Această opțiune îi cere CPP să adauge o țintă falsă pentru fiecare dependență, alta decât cea
fișierul principal, făcându-i pe fiecare să nu depindă de nimic. Aceste reguli false funcționează în jurul erorilor
face oferă dacă eliminați fișierele antet fără a actualiza makefile a se potrivi.

Aceasta este ieșirea tipică:

test.o: test.c test.h

test.h:

-MT ţintă
Schimbați ținta regulii emisă de generarea dependenței. În mod implicit, CPP ia
numele fișierului de intrare principal, șterge orice componente de director și orice sufix de fișier
precum .cși adaugă sufixul obiect obișnuit al platformei. Rezultatul este ținta.

An -MT opțiunea va seta ținta să fie exact șirul pe care îl specificați. Daca vrei
ținte multiple, le puteți specifica ca un singur argument pentru -MT, sau folosiți mai multe
-MT opțiuni.

De exemplu, -MT „$(objpfx)foo.o” ar putea da

$(objpfx)foo.o: foo.c

-MQ ţintă
La fel ca -MT, dar citează orice caractere care sunt speciale pentru a crea.
-MQ „$(objpfx)foo.o” oferă

$$(objpfx)foo.o: foo.c

Ținta implicită este cotată automat, ca și cum ar fi fost dată cu -MQ.

-MD -MD este echivalent cu -M -MF fişier, cu excepția asta -E nu este subînțeles. Soferul
determină fişier pe baza faptului că an -o este dată opțiunea. Dacă este, șoferul îl folosește
argument dar cu un sufix de .d, altfel ia numele fișierului de intrare,
elimină orice componente și sufix de director și aplică a .d sufix.

If -MD este folosit împreună cu -E, orice -o comutatorul este înțeles pentru a specifica
fișier de ieșire al dependenței, dar dacă este folosit fără -E, fiecare -o se înțelege că specifică a
fișier obiect țintă.

Întrucât -E nu este subînțeles, -MD poate fi folosit pentru a genera un fișier de ieșire de dependență ca a
efect secundar al procesului de compilare.

-MMD
Aprecieri -MD cu excepția menționării numai a fișierelor antet utilizator, nu a fișierelor antet de sistem.

-x c
-x c ++
-x obiectiv-c
-x asamblator-cu-cpp
Specificați limba sursă: C, C++, Objective-C sau asamblare. Asta nu are nimic de-a face
cu conformitatea standardelor sau extinderi; doar selectează ce sintaxă de bază
aştepta. Dacă nu oferi niciuna dintre aceste opțiuni, cpp va deduce limba din
extensia fișierului sursă: .c, . Cc, .m, .S. Alte extensii comune pentru
C++ și asamblarea sunt, de asemenea, recunoscute. Dacă cpp nu recunoaște extensia, aceasta
va trata fișierul ca C; acesta este modul cel mai generic.

Notă: Versiunile anterioare de cpp au acceptat a -Long opțiunea care a selectat atât
limba și nivelul de conformitate cu standardele. Această opțiune a fost eliminată, deoarece
intră în conflict cu -l opțiune.

-std=standard
-ansi
Specificați standardul la care trebuie să se conformeze codul. În prezent, CPP știe despre C
și standardele C++; altele pot fi adăugate în viitor.

standard poate fi unul dintre:

"c90"
"c89"
„iso9899:1990”
Standardul ISO C din 1990. c90 este prescurtarea obișnuită pentru această versiune a
standardul.

-ansi opțiunea este echivalentă cu -std=c90.

„iso9899:199409”
Standardul C din 1990, modificat în 1994.

„iso9899:1999”
"c99"
„iso9899:199x”
"c9x"
Standardul ISO C revizuit, publicat în decembrie 1999. Înainte de publicare, acesta
a fost cunoscut sub numele de C9X.

„iso9899:2011”
"c11"
"c1x"
Standardul ISO C revizuit, publicat în decembrie 2011. Înainte de publicare, acesta
a fost cunoscut sub numele de C1X.

"gnu90"
"gnu89"
Standardul C din 1990 plus extensii GNU. Aceasta este valoarea implicită.

"gnu99"
"gnu9x"
Standardul C din 1999 plus extensii GNU.

"gnu11"
"gnu1x"
Standardul C din 2011 plus extensii GNU.

"c++98"
Standardul ISO C++ din 1998 plus amendamente.

"gnu++98"
La fel ca -std=c++98 plus extensii GNU. Aceasta este valoarea implicită pentru codul C++.

-eu- Împărțiți calea de includere. Orice directoare specificate cu -I opțiuni înainte -eu- sunt
a căutat numai antetele solicitate cu „#include”fişier""; nu sunt căutați
"#includefisier>". Dacă sunt specificate directoare suplimentare cu -I opțiuni după
-eu-, acele directoare sunt căutate pentru toate #include directivelor.

În plus, -eu- inhibă utilizarea directorului directorului de fișiere curent ca
primul director de căutare pentru „#include”fişier"".

Această opțiune a fost retrasă.

-nostdinc
Nu căutați fișierele antet în directoarele standard de sistem. Doar directoarele
ai specificat cu -I opțiuni (și directorul fișierului curent, dacă
adecvate) sunt căutate.

-nostdinc++
Nu căutați fișiere de antet în directoarele standard specifice C++, dar faceți totuși
căutați în celelalte directoare standard. (Această opțiune este folosită la construirea C++
bibliotecă.)

-include fişier
Proces fişier ca și cum „#include „fișier”” a apărut ca prima linie a sursei primare
fişier. Cu toate acestea, primul director căutat fişier funcționează preprocesorul
director in schimb of directorul care conține fișierul sursă principal. Dacă nu este găsit
acolo, este căutat în restul lanțului de căutare „#include „...”” ca
normale.

Dacă este multiplu -include sunt date opțiuni, fișierele sunt incluse în ordinea în care acestea
apar pe linia de comandă.

-imacros fişier
Exact ca -include, cu excepția faptului că orice rezultat produs prin scanare fişier este aruncat
departe. Macro-urile pe care le definește rămân definite. Acest lucru vă permite să achiziționați toate macrocomenzile
dintr-un antet fără a procesa și declarațiile acestuia.

Toate fișierele specificate de -imacros sunt procesate înaintea tuturor fișierelor specificate de -include.

-idirafter dir
Caută dir pentru fișierele antet, dar fă-o după toate directoarele specificate cu -I si
directoarele de sistem standard au fost epuizate. dir este tratat ca un sistem include
director. Dacă dir începe cu „=", apoi „=" va fi înlocuit cu sysroot
prefix; vedea --sysroot si -isysroot.

-iprefix prefix
Specifica prefix ca prefix pentru ulterioare -icuprefix Opțiuni. Dacă prefixul
reprezintă un director, ar trebui să includeți finalul /.

-icuprefix dir
-iwithprefixbefore dir
Adăuga dir la prefixul specificat anterior cu -iprefix, și adăugați rezultatul
director la calea de căutare include. -iwithprefixbefore îl pune în același loc -I
ar fi; -icuprefix o pune unde -idirafter ar fi.

-isysroot dir
Această opțiune este ca --sysroot opțiunea, dar se aplică numai fișierelor antet (cu excepția
ținte Darwin, unde se aplică atât fișierelor antet, cât și bibliotecilor). Vezi
--sysroot opțiune pentru mai multe informații.

-imultilib dir
Utilizare dir ca subdirector al directorului care conține anteturi C++ specifice țintei.

-isistem dir
Caută dir pentru fișierele antet, după toate directoarele specificate de -I dar înainte de
directoare standard de sistem. Marcați-l ca director de sistem, astfel încât să devină același
tratament special aplicat directoarelor de sistem standard.

If dir începe cu „=", apoi „=" va fi înlocuit cu prefixul sysroot; vedea
--sysroot si -isysroot.

-citez dir
Caută dir numai pentru fișierele antet solicitate cu „#include”fişier""; ei nu sunt
a căutat „#includefisier>", înaintea tuturor directoarelor specificate de -I și înainte de
directoare standard de sistem.

If dir începe cu „=", apoi „=" va fi înlocuit cu prefixul sysroot; vedea
--sysroot si -isysroot.

-fdirectives-doar
Când preprocesați, gestionați directivele, dar nu extindeți macrocomenzi.

Comportamentul opțiunii depinde de -E si -fpreprocesate opțiuni.

cu -E, preprocesarea este limitată la gestionarea directivelor precum „#define”,
„#ifdef” și „#error”. Alte operațiuni de preprocesor, cum ar fi extinderea macro și
conversia trigraf nu sunt efectuate. In plus -dD opțiunea este implicit
activat.

cu -fpreprocesate, predefinirea liniei de comandă și a majorității macrocomenzilor încorporate este
dezactivat. Macro-urile precum „__LINE__”, care sunt dependente de context, sunt gestionate
în mod normal. Aceasta permite compilarea fișierelor preprocesate anterior cu „-E
-doar fdirective".

Cu amândoi -E si -fpreprocesate, regulile pentru -fpreprocesate a avea prioritate. Acest
permite preprocesarea completă a fișierelor preprocesate anterior cu „-E
-doar fdirective".

-fdolari-în-identificatori
Accept $ în identificatori.

-identificatori-extinși
Acceptați nume universale de caractere în identificatori. Această opțiune este activată implicit
pentru C99 (și versiunile standard C ulterioare) și C++.

-anteturi-sistem-fno-canonice
Când preprocesați, nu scurtați căile antetului sistemului cu canonizare.

-fpreprocesate
Indicați preprocesorului că fișierul de intrare a fost deja preprocesat. Acest
suprimă lucruri precum extinderea macro, conversia trigrafului, îmbinarea nou-linii scăpată,
și procesarea majorității directivelor. Preprocesorul încă recunoaște și elimină
comentarii, astfel încât să puteți transmite un fișier preprocesat cu -C la compilator fără
Probleme. În acest mod, preprocesorul integrat este puțin mai mult decât un tokenizer
pentru capete frontale.

-fpreprocesate este implicit dacă fișierul de intrare are una dintre extensii .i, .ii or .mi.
Acestea sunt extensiile pe care GCC le folosește pentru fișierele preprocesate create de -save-temps.

-ftabstop=lățime
Setați distanța dintre punctele de tabulatură. Acest lucru ajută preprocesorul să raporteze coloana corectă
numere în avertismente sau erori, chiar dacă pe linie apar file. Dacă valoarea este mai mică
mai mare de 1 sau mai mare de 100, opțiunea este ignorată. Valoarea implicită este 8.

-fdebug-cpp
Această opțiune este utilă numai pentru depanarea GCC. Când este folosit cu -E, depanarea depozitelor
informații despre hărți de locație. Fiecare token din ieșire este precedat de dump of
harta căreia îi aparține locația. Depozitul hărții care conține locația unui jeton
va fi:

{"P":F ;"F":F ;"L": ;"C": ;"S": ;"M": ;"E": ,"loc": }

Când este folosit fără -E, această opțiune nu are efect.

-ftrack-macro-expansiune[=nivel]
Urmăriți locațiile jetoanelor în extinderile macro. Acest lucru permite compilatorului să emită
diagnostic despre stiva actuală de extindere a macrocomenzii atunci când apare o eroare de compilare în
o extindere macro. Folosirea acestei opțiuni face ca preprocesorul și compilatorul să consume
mai multa memorie. The nivel parametrul poate fi folosit pentru a alege nivelul de precizie al jetonului
urmărirea locației scăzând astfel consumul de memorie dacă este necesar. Valoare 0 of
nivel dezactivează această opțiune ca și cum nu -ftrack-macro-expansiune a fost prezent pe
linia de comandă. Valoare 1 urmărește locațiile jetoanelor într-un mod degradat de dragul
suprasarcina minimă de memorie. În acest mod toate jetoanele rezultate din extinderea unui
argumentul unei macro-funcții au aceeași locație. Valoare 2 urmărește jetoanele
locații complet. Această valoare este cea mai înfometată de memorie. Când este dată această opțiune
nici un argument, valoarea implicită a parametrului este 2.

Rețineți că „-ftrack-macro-expansion=2” este activat implicit.

-fexec-charset=set de caractere
Setați setul de caractere de execuție, utilizat pentru constantele șir și caractere. Implicit
este UTF-8. set de caractere poate fi orice codificare acceptată de biblioteca „iconv” a sistemului
rutină.

-fwide-exec-charset=set de caractere
Setați setul larg de caractere de execuție, utilizat pentru șiruri largi și constante de caractere.
Valoarea implicită este UTF-32 sau UTF-16, oricare dintre acestea corespunde lățimii lui „wchar_t”. La fel de
cu -fexec-charset, set de caractere poate fi orice codificare acceptată de „iconv” a sistemului
rutina bibliotecii; cu toate acestea, veți avea probleme cu codificările care nu se potrivesc
exact în „wchar_t”.

-finput-charset=set de caractere
Setați setul de caractere de intrare, utilizat pentru traducere din setul de caractere de intrare
fișier la setul de caractere sursă utilizat de GCC. Dacă localitatea nu specifică, sau GCC
nu pot obține aceste informații din local, implicit este UTF-8. Acesta poate fi
suprascris fie de local sau de această opțiune de linie de comandă. În prezent comanda-
opțiunea de linie are prioritate dacă există un conflict. set de caractere poate fi orice codificare
susținut de rutina bibliotecii „iconv” a sistemului.

-fworking-director
Activați generarea de marcatori de linie în ieșirea preprocesorului care va permite compilatorului
cunoașteți directorul de lucru curent în momentul preprocesării. Când această opțiune este
activat, preprocesorul va emite, după marcatorul de linie inițial, un al doilea marcator de linie
cu directorul de lucru curent urmat de două bare oblice. GCC va folosi acest lucru
director, când este prezent în intrarea preprocesată, ca directorul emis ca
directorul de lucru curent în unele formate de informații de depanare. Această opțiune este
activat implicit dacă informațiile de depanare sunt activate, dar acest lucru poate fi inhibat cu
forma negata -fno-director-de-lucru. Dacă -P steag este prezent în comandă
linie, această opțiune nu are niciun efect, deoarece nu sunt emise directive „#line”.

-fno-arata-coloana
Nu tipăriți numerele coloanelor în diagnosticare. Acest lucru poate fi necesar dacă sunt diagnosticate
fiind scanat de un program care nu înțelege numerele coloanelor, cum ar fi
dejagnu.

-A predicat=răspunde
Faceți o afirmație cu predicatul predicat si raspunsul răspunde. Această formă este
preferat formei mai vechi -A predicat(răspunde), care este încă susținut, pentru că
nu folosește caractere speciale shell.

-A -predicat=răspunde
Anulează o aserțiune cu predicatul predicat si raspunsul răspunde.

-dCHARS
CHARS este o secvență de unul sau mai multe dintre următoarele caractere și nu trebuie să fie
precedat de un spațiu. Alte caractere sunt interpretate de compilatorul propriu-zis, sau
rezervat pentru versiunile viitoare ale GCC și, prin urmare, sunt ignorate în tăcere. Daca specificati
personaje al căror comportament este în conflict, rezultatul este nedefinit.

M În loc de ieșirea normală, generați o listă de #defini directive pentru toate
macrocomenzi definite în timpul execuției preprocesorului, inclusiv predefinite
macro-uri. Acest lucru vă oferă o modalitate de a afla ce este predefinit în versiunea dvs. de
preprocesorul. Presupunând că nu aveți niciun fișier foo.h, comanda

atinge foo.h; cpp -dM foo.h

va afișa toate macrocomenzile predefinite.

Dacă utilizați -dM fara -E opțiune, -dM este interpretat ca sinonim pentru
-fdump-rtl-mach.

D Aprecieri M cu excepția a două privințe: o face nu include macrocomenzile predefinite și acesta
iesiri atât il #defini directivele și rezultatul preprocesării. Ambele feluri
de ieșire mergeți la fișierul de ieșire standard.

N Aprecieri D, dar emit doar numele macro, nu expansiunile acestora.

I producție #include directive pe lângă rezultatul preprocesării.

U Aprecieri D cu excepția faptului că numai macrocomenzile care sunt extinse sau a căror definiție este testată
în directivele de preprocesor, sunt ieșite; ieșirea este întârziată până la utilizare sau
testarea macro-ului; și #undef directivele sunt, de asemenea, ieșite pentru macro-urile testate, dar
nedefinit la momentul respectiv.

-P Inhibați generarea de marcatori de linie în ieșirea de la preprocesor. Acest lucru ar putea fi
util atunci când rulați preprocesorul pe ceva care nu este cod C și va fi trimis
la un program care ar putea fi confundat de marcatori de linie.

-C Nu aruncați comentarii. Toate comentariile sunt transmise în fișierul de ieșire, cu excepția
pentru comentariile din directivele procesate, care sunt șterse împreună cu directiva.

Ar trebui să fiți pregătit pentru efecte secundare atunci când utilizați -C; determină preprocesorul să
tratează comentariile ca semne în sine. De exemplu, comentariile care apar la
începutul a ceea ce ar fi o linie directivă are ca efect transformarea acelei linii într-un
linie sursă obișnuită, deoarece primul jeton de pe linie nu mai este a #.

-CC Nu aruncați comentarii, inclusiv în timpul extinderii macrocomenzilor. Acesta este ca -C, cu exceptia
că comentariile conținute în macrocomenzi sunt, de asemenea, transmise în fișierul de ieșire unde
macro-ul este extins.

Pe lângă efectele secundare ale -C opțiune, -CC opțiunea cauzează tot stilul C++
comentariile dintr-o macrocomandă pentru a fi convertite în comentarii în stil C. Acest lucru este pentru a preveni mai târziu
utilizarea acelei macrocomenzi de la comentarea din neatenție a restului liniei sursă.

-CC opțiunea este în general utilizată pentru a susține comentariile la scame.

-traditional-cpp
Încercați să imiteți comportamentul preprocesoarelor C de modă veche, spre deosebire de ISO C
preprocesoare.

-trigrafe
Procesează secvențe trigrafice.

-remapa
Activați codul special pentru a funcționa în jurul sistemelor de fișiere care permit doar fișiere foarte scurte
nume, cum ar fi MS-DOS.

--Ajutor
--ţintă-ajutor
Tipăriți text care descrie toate opțiunile liniei de comandă în loc să preprocesați nimic.

-v Modul verbos. Tipăriți numărul versiunii GNU CPP la începutul execuției și
raportați forma finală a căii de includere.

-H Tipăriți numele fiecărui fișier antet utilizat, pe lângă alte activități normale. Fiecare
numele este indentat pentru a arăta cât de adânc în #include stiva este. Antet precompilat
fișierele sunt, de asemenea, tipărite, chiar dacă sunt considerate invalide; un precompilat invalid
fișierul antet este tipărit cu ...X si unul valabil cu ...! .

-versiune
--versiune
Imprimați numărul versiunii GNU CPP. Cu o liniuță, treceți la preprocesare ca de obicei.
Cu două liniuțe, ieșiți imediat.

MEDIUL


Această secțiune descrie variabilele de mediu care afectează modul în care funcționează CPP. Poti
folosiți-le pentru a specifica directoare sau prefixe pe care să le utilizați când căutați fișiere incluse sau pentru
ieșirea dependenței de control.

Rețineți că puteți specifica, de asemenea, locuri în care să căutați folosind opțiuni precum -I, și control
ieșire de dependență cu opțiuni precum -M. Acestea au prioritate asupra variabilelor de mediu,
care la rândul lor au prioritate asupra configurației GCC.

CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
Valoarea fiecărei variabile este o listă de directoare separate printr-un caracter special, mult
ca PATH, în care să căutați fișierele antet. Caracterul special,
„PATH_SEPARATOR”, depinde de țintă și este determinată la momentul construirii GCC. Pentru Microsoft
Țintele bazate pe Windows este un punct și virgulă, iar pentru aproape toate celelalte ținte este un
colon.

CPATH specifică o listă de directoare pentru a fi căutate ca și cum ar fi fost specificate -I, Dar
după orice căi date cu -I opțiuni pe linia de comandă. Această variabilă de mediu
este folosit indiferent de limbajul care este preprocesat.

Variabilele de mediu rămase se aplică numai la preprocesarea particulară
limba indicată. Fiecare specifică o listă de directoare care trebuie căutate ca și cum
specificat cu -isistem, dar după orice căi date cu -isistem opțiuni pe
Linie de comanda.

În toate aceste variabile, un element gol indică compilatorului să caute curentul său
directorul de lucru. Elementele goale pot apărea la începutul sau la sfârșitul unei căi. Pentru
de exemplu, dacă valoarea lui CPATH este „:/special/include”, care are același efect ca
-Eu. -eu/special/include.

DEPENDENCE_OUTPUT
Dacă această variabilă este setată, valoarea ei specifică modul de ieșire a dependențelor pentru Make based
pe fișierele antet non-sistem procesate de compilator. Fișierele antet de sistem sunt
ignorat în rezultatul dependenței.

Valoarea a DEPENDENCE_OUTPUT poate fi doar un nume de fișier, caz în care regulile Make
sunt scrise în acel fișier, ghicind numele țintă din numele fișierului sursă. Sau
valoarea poate avea forma fişier ţintă, caz în care regulile sunt scrise la dosar fişier
folosind ţintă ca nume țintă.

Cu alte cuvinte, această variabilă de mediu este echivalentă cu combinarea opțiunilor -MM
si -MF, cu opțional -MT comuta si el.

SUNPRO_DEPENDENCE
Această variabilă este aceeași cu DEPENDENCE_OUTPUT (vezi mai sus), cu excepția acelui sistem
Fișierele antet nu sunt ignorate, așa că implică -M mai degrabă decât -MM. Însă
dependența de fișierul de intrare principal este omisă.

Utilizați cpp-6 online folosind serviciile onworks.net



Cele mai recente programe online Linux și Windows