Ito ang command cpp na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator
PROGRAMA:
NAME
cpp - Ang C Preprocessor
SINOPSIS
cpp [-Dmacro[=defn]...] [-Umacro]
[-Idir...] [-iquotedir...]
[-Wbalaan...]
[-M|-MM] [-MG] [-MF filename]
[-MP] [-MQ target...]
[-MT target...]
[-P] [-fno-working-directory]
[-x wika] [-std=pamantayan]
infile outfile
Ang mga pinakakapaki-pakinabang na opsyon lamang ang nakalista dito; tingnan sa ibaba para sa natitira.
DESCRIPTION
Ang C preprocessor, madalas na kilala bilang cpp, Ay isang macro processor na awtomatikong ginagamit ng
ang C compiler upang ibahin ang anyo ng iyong programa bago mag-compile. Ito ay tinatawag na isang macro
processor dahil pinapayagan ka nitong tukuyin macros, na mga maiikling abbreviation para sa mas matagal
mga konstruksyon.
Ang C preprocessor ay nilayon na gamitin lamang sa C, C++, at Objective-C source code.
Noong nakaraan, inabuso ito bilang pangkalahatang text processor. Ito ay mabulunan sa input kung saan
hindi sumusunod sa leksikal na tuntunin ng C. Halimbawa, ang mga kudlit ay bibigyang-kahulugan bilang ang
simula ng mga constant ng character, at nagiging sanhi ng mga error. Gayundin, hindi ka maaaring umasa dito
pagpapanatili ng mga katangian ng input na hindi mahalaga sa mga wika ng C-family.
Kung ang isang Makefile ay preprocessed, ang lahat ng mga hard tab ay aalisin, at ang Makefile ay aalisin
hindi gumagana.
Sa pagsasabi niyan, madalas kang makakaalis sa paggamit ng cpp sa mga bagay na hindi C. Iba pa
Ang mga wikang programming ng Algol-ish ay kadalasang ligtas (Pascal, Ada, atbp.) Gayundin ang pagpupulong, na may
pag-iingat. -tradisyonal-cpp Ang mode ay nagpapanatili ng mas maraming puting espasyo, at kung hindi man ay higit pa
permissive. Marami sa mga problema ay maiiwasan sa pamamagitan ng pagsulat ng mga komento sa istilong C o C++
sa halip na mga komento sa katutubong wika, at panatilihing simple ang mga macro.
Hangga't maaari, dapat kang gumamit ng preprocessor na nakatuon sa wikang iyong sinusulat
sa. Ang mga modernong bersyon ng GNU assembler ay may mga macro facility. Pinakamataas na antas
Ang mga programming language ay may sariling conditional compilation at inclusion mechanism. Kung
lahat ng iba ay nabigo, subukan ang isang tunay na pangkalahatang text processor, tulad ng GNU M4.
Ang mga C preprocessor ay nag-iiba sa ilang mga detalye. Tinatalakay ng manwal na ito ang GNU C preprocessor, na
nagbibigay ng maliit na superset ng mga feature ng ISO Standard C. Sa default mode nito, ang GNU
Ang C preprocessor ay hindi gumagawa ng ilang bagay na kinakailangan ng pamantayan. Ito ay mga tampok
na bihira, kung sakaling, ginagamit, at maaaring magdulot ng mga nakakagulat na pagbabago sa kahulugan ng a
programa na hindi inaasahan sa kanila. Upang makakuha ng mahigpit na ISO Standard C, dapat mong gamitin ang
-std=c90, -std=c99 or -std=c11 mga opsyon, depende sa kung aling bersyon ng pamantayan ka
gusto. Upang makuha ang lahat ng ipinag-uutos na diagnostic, dapat mo ring gamitin -pedantic.
Inilalarawan ng manual na ito ang pag-uugali ng ISO preprocessor. Para mabawasan ang walang bayad
pagkakaiba, kung saan ang pag-uugali ng ISO preprocessor ay hindi sumasalungat sa tradisyonal
semantics, ang tradisyunal na preprocessor ay dapat kumilos sa parehong paraan. Ang iba't-ibang
Ang mga pagkakaiba na umiiral ay detalyado sa seksyon Tradisyonal paraan.
Para sa kalinawan, maliban kung binanggit kung hindi, ang mga sanggunian sa CPP sa manwal na ito ay sumangguni sa GNU CPP.
Opsyon
Inaasahan ng C preprocessor ang dalawang pangalan ng file bilang mga argumento, infile at outfile. ang
nabasa ng preprocessor infile kasama ng anumang iba pang mga file na tinutukoy nito # isama. Lahat
ang output na nabuo ng pinagsamang input file ay nakasulat sa outfile.
Alinman infile or outfile maaaring hindi -, na bilang infile ibig sabihin ay magbasa mula sa karaniwang input at
as outfile nangangahulugang sumulat sa karaniwang output. Gayundin, kung ang alinman sa file ay tinanggal, nangangahulugan ito
katulad ng kung - ay tinukoy para sa file na iyon.
Maliban kung binanggit, o nagtatapos ang opsyon =, lahat ng mga opsyon na kumukuha ng argumento ay maaaring
ipakita ang argumentong iyon alinman kaagad pagkatapos ng opsyon, o may puwang sa pagitan
opsyon at argumento: -Ifoo at -I foo may parehong epekto.
Maraming mga pagpipilian ang may maraming mga pangalan ng titik; samakatuwid maramihang mga pagpipilian sa solong titik ay maaaring hindi be
nakapangkat: -dM ibang-iba sa -d -M.
-D pangalan
Paunang tukuyin pangalan bilang isang macro, na may kahulugan 1.
-D pangalan=depinisyon
Ang mga nilalaman ng depinisyon ay tokenized at pinoproseso na parang sila ay lumitaw noong
ikatlong yugto ng pagsasalin sa a # tukuyin direktiba. Sa partikular, ang magiging kahulugan ay
pinutol ng mga naka-embed na newline na character.
Kung gumagamit ka ng preprocessor mula sa isang shell o shell-like program na maaaring kailanganin mo
upang gamitin ang quoting syntax ng shell upang protektahan ang mga character tulad ng mga puwang na may a
kahulugan sa shell syntax.
Kung nais mong tukuyin ang isang macro na tulad ng function sa command line, isulat ang argumento nito
listahan na may nakapalibot na panaklong bago ang katumbas na tanda (kung mayroon). Ang mga panaklong ay
makabuluhan sa karamihan ng mga shell, kaya kakailanganin mong banggitin ang opsyon. Sa sh at csh,
-D'pangalan(args...)=depinisyon' gawa.
-D at -U Pinoproseso ang mga opsyon sa pagkakasunud-sunod na ibinigay sa command line. Lahat
-imacros file at -isama file ang mga pagpipilian ay naproseso pagkatapos ng lahat -D at -U mga pagpipilian.
-U pangalan
Kanselahin ang anumang dating kahulugan ng pangalan, alinman sa built in o binigyan ng a -D pagpipilian.
-undef
Huwag paunang tukuyin ang anumang mga macro na partikular sa system o partikular sa GCC. Ang pamantayang paunang natukoy
nananatiling tinukoy ang mga macro.
-I dir
Idagdag ang direktoryo dir sa listahan ng mga direktoryo na hahanapin para sa mga file ng header.
Mga direktoryo na pinangalanan ni -I Hinahanap bago ang karaniwang sistema isama ang mga direktoryo.
Kung ang direktoryo dir ay isang karaniwang sistema na may kasamang direktoryo, ang opsyon ay hindi papansinin
tiyakin na ang default na order sa paghahanap para sa mga direktoryo ng system at ang espesyal na paggamot
ng mga header ng system ay hindi natalo. Kung dir nagsisimula sa "=", pagkatapos ay ang "=" ay magiging
pinalitan ng sysroot prefix; tingnan mo --sysroot at -isysroot.
-o file
Isulat ang output sa file. Ito ay kapareho ng pagtukoy file bilang pangalawang hindi opsyon
pagtatalo sa cpp. gcc ay may ibang interpretasyon ng pangalawang argumentong hindi opsyon,
kaya dapat mong gamitin -o upang tukuyin ang output file.
-Pader
Ino-on ang lahat ng opsyonal na babala na kanais-nais para sa normal na code. Sa kasalukuyan ito
is -Wcomment, -Wtrigraphs, -Wmultichar at isang babala tungkol sa integer promotion na nagdudulot ng a
pagbabago ng sign sa "#if" na mga expression. Tandaan na marami sa mga babala ng preprocessor
ay naka-on bilang default at walang mga opsyon upang kontrolin ang mga ito.
-Wcomment
-Mga komento
Magbabala sa tuwing may sequence ng pagsisimula ng komento /* lilitaw sa a /* komento, o kahit kailan a
lumilitaw ang backslash-newline sa a // komento. (Ang parehong mga anyo ay may parehong epekto.)
-Wtrigraphs
Karamihan sa mga trigraph sa mga komento ay hindi makakaapekto sa kahulugan ng programa. Gayunpaman, a
trigraph na bubuo ng isang nakatakas na bagong linya (??/ sa dulo ng isang linya) maaari, sa pamamagitan ng
pagbabago kung saan nagsisimula o nagtatapos ang komento. Samakatuwid, ang mga trigraph lamang ang bubuo
ang mga nakatakas na bagong linya ay gumagawa ng mga babala sa loob ng isang komento.
Ang pagpipiliang ito ay ipinahiwatig ng -Pader. Kung -Pader ay hindi ibinigay, ang pagpipiliang ito ay pinagana pa rin
maliban kung pinagana ang mga trigraph. Upang makakuha ng trigraph conversion nang walang mga babala, ngunit kumuha
ang iba pang mga -Pader mga babala, gamitin -trigraphs -Pader -Wno-trigraphs.
-Wtradisyonal
Magbabala tungkol sa ilang partikular na konstruksyon na kumikilos nang iba sa tradisyonal at ISO C. Gayundin
bigyan ng babala ang tungkol sa mga konstruksyon ng ISO C na walang tradisyonal na katumbas na C, at may problema
mga konstruksyon na dapat iwasan.
-Wundef
Magbabala sa tuwing may makikitang identifier na hindi isang macro sa isang #kung directive,
sa labas ng tinukoy. Ang mga naturang identifier ay pinapalitan ng zero.
-Wunused-macros
Babala tungkol sa mga macro na tinukoy sa pangunahing file na hindi ginagamit. Ang isang macro ay ginamit kung ito ay
pinalawak o nasubok para sa pagkakaroon ng hindi bababa sa isang beses. Magbabala rin ang preprocessor kung
ang macro ay hindi nagamit sa oras na ito ay muling tinukoy o hindi natukoy.
Mga built-in na macro, macro na tinukoy sa command line, at macro na tinukoy sa kasama
hindi binabalaan ang mga file.
tandaan: Kung ang isang macro ay aktwal na ginagamit, ngunit ginagamit lamang sa mga nilaktawan na conditional block, kung gayon
Iuulat ito ng CPP bilang hindi nagamit. Upang maiwasan ang babala sa ganoong kaso, maaari kang pagbutihin
ang saklaw ng kahulugan ng macro sa pamamagitan ng, halimbawa, ang paglipat nito sa unang nilaktawan
harangan. Bilang kahalili, maaari kang magbigay ng dummy na paggamit sa isang bagay tulad ng:
#if tinukoy ang_macro_causing_the_warning
#endif
-Wendif-label
Magbabala sa tuwing an #iba o isang #endif ay sinusundan ng text. Ito ay kadalasang nangyayari sa
code ng form
#kung FOO
...
#ibang FOO
...
#endif FOO
Ang pangalawa at pangatlong "FOO" ay dapat nasa mga komento, ngunit kadalasan ay wala sa mas lumang mga programa.
Naka-on ang babalang ito bilang default.
-Werror
Gawing mahirap na mga pagkakamali ang lahat ng babala. Ang source code na nagpapalitaw ng mga babala ay magiging
tinanggihan.
-Wsystem-header
Mga babala sa isyu para sa code sa mga header ng system. Ang mga ito ay karaniwang hindi nakakatulong sa paghahanap
mga bug sa iyong sariling code, samakatuwid ay pinigilan. Kung ikaw ay responsable para sa sistema
library, maaaring gusto mong makita sila.
-w Pigilan ang lahat ng babala, kabilang ang mga ini-isyu ng GNU CPP bilang default.
-pedantic
Ibigay ang lahat ng mandatoryong diagnostic na nakalista sa pamantayang C. Ang ilan sa kanila ay naiwan
out bilang default, dahil madalas silang nag-trigger sa hindi nakakapinsalang code.
-pedantic-errors
Ibigay ang lahat ng mandatoryong diagnostic, at gawing mga error ang lahat ng mandatoryong diagnostic.
Kabilang dito ang mga mandatoryong diagnostic na hindi iniisyu ng GCC -pedantic ngunit tinatrato bilang
mga babala
-M Sa halip na i-output ang resulta ng preprocessing, mag-output ng panuntunang angkop para sa gumawa
naglalarawan sa mga dependencies ng pangunahing source file. Ang preprocessor ay naglalabas ng isa
gumawa panuntunan na naglalaman ng object file name para sa source file na iyon, isang colon, at ang mga pangalan
ng lahat ng kasamang file, kabilang ang mga nanggaling -isama or -imacros utos-
mga pagpipilian sa linya.
Maliban kung tahasang tinukoy (na may -MT or -MQ), ang pangalan ng object file ay binubuo ng
pangalan ng source file na may anumang suffix na pinalitan ng object file suffix at kahit ano
inalis ang mga nangungunang bahagi ng direktoryo. Kung mayroong maraming kasamang mga file kung gayon ang panuntunan ay
hatiin sa ilang linya gamit ang \-bagong linya. Ang panuntunan ay walang mga utos.
Hindi pinipigilan ng opsyong ito ang debug na output ng preprocessor, gaya ng -dM. Para maiwasan
paghahalo ng naturang debug na output sa mga panuntunan sa dependency na dapat mong tahasang tukuyin ang
dependency output file na may -MF, o gumamit ng environment variable tulad ng
DEPENDENCE_OUTPUT. Ang debug na output ay ipapadala pa rin sa regular na output stream bilang
Normal.
Pagdaan -M sa driver ay nagpapahiwatig -E, at pinipigilan ang mga babala nang may implicit -w.
-MM katulad -M ngunit huwag banggitin ang mga file ng header na matatagpuan sa mga direktoryo ng header ng system,
o mga file ng header na kasama, direkta o hindi direkta, mula sa naturang header.
Ito ay nagpapahiwatig na ang pagpili ng mga angle bracket o double quote sa isang # isama
Hindi mismo tinutukoy ng direktiba kung lalabas ang header na iyon -MM
output ng dependency. Ito ay isang bahagyang pagbabago sa semantics mula sa GCC na bersyon 3.0 at
mas maaga.
-MF file
Kapag ginamit sa -M or -MM, ay tumutukoy sa isang file kung saan isusulat ang mga dependencies. Kung hindi -MF
Ang switch ay binibigyan ng preprocessor na nagpapadala ng mga patakaran sa parehong lugar na ipapadala nito
preprocessed na output.
Kapag ginamit sa mga pagpipilian sa driver -MD or -MMD, -MF override ang default dependency
output file.
-MG Kasabay ng isang opsyon tulad ng -M humihiling ng pagbuo ng dependency, -MG ipinapalagay
Ang mga nawawalang file ng header ay nabuong mga file at idinaragdag ang mga ito sa listahan ng dependency nang wala
pagtataas ng error. Ang dependency filename ay direktang kinuha mula sa "#include"
direktiba nang hindi naghahanda ng anumang landas. -MG pinipigilan din ang preprocessed na output, bilang a
ang nawawalang file ng header ay nagiging walang silbi.
Ang tampok na ito ay ginagamit sa awtomatikong pag-update ng mga makefile.
-MP Ang opsyong ito ay nagtuturo sa CPP na magdagdag ng huwad na target para sa bawat dependency maliban sa
pangunahing file, na nagiging sanhi ng bawat isa na umaasa sa wala. Gumagana ang mga dummy na panuntunang ito sa mga error
gumawa nagbibigay kung aalisin mo ang mga file ng header nang hindi ina-update ang Makefile ipareha.
Ito ay karaniwang output:
pagsubok.o: pagsubok.c pagsubok.h
pagsubok.h:
-MT target
Baguhin ang target ng panuntunang inilabas ng pagbuo ng dependency. Bilang default, tumatagal ang CPP
ang pangalan ng pangunahing input file, tinatanggal ang anumang mga bahagi ng direktoryo at anumang suffix ng file
tulad ng .c, at idinadagdag ang karaniwang object suffix ng platform. Ang resulta ay ang target.
An -MT itatakda ng opsyon ang target na eksaktong string na iyong tinukoy. Kung gusto mo
maramihang mga target, maaari mong tukuyin ang mga ito bilang isang argumento sa -MT, o gumamit ng maramihan
-MT mga pagpipilian.
Halimbawa, -MT '$(objpfx)foo.o' maaaring magbigay
$(objpfx)foo.o: foo.c
-MQ target
Katulad ng -MT, ngunit sinipi nito ang anumang mga character na espesyal na Gawin.
-MQ '$(objpfx)foo.o' Binibigyan
$$(objpfx)foo.o: foo.c
Ang default na target ay awtomatikong sinipi, na para bang ito ay ibinigay kasama -MQ.
-MD -MD ay katumbas ng -M -MF file, maliban doon -E ay hindi ipinahiwatig. Ang driver
determinado file batay sa kung ang isang -o ang pagpipilian ay ibinigay. Kung ito ay, ang driver ay gumagamit nito
argumento ngunit may panlapi ng .d, kung hindi, ito ay kukuha ng pangalan ng input file,
inaalis ang anumang bahagi ng direktoryo at suffix, at inilalapat ang a .d hulapi.
If -MD ay ginagamit kasabay ng -E, anuman -o switch ay nauunawaan upang tukuyin ang
dependency output file, ngunit kung ginamit nang wala -E, bawat isa -o ay nauunawaan upang tukuyin ang a
target na object file.
Dahil sa -E ay hindi ipinahiwatig, -MD ay maaaring magamit upang makabuo ng isang dependency output file bilang a
side-effect ng proseso ng compilation.
-MMD
katulad -MD maliban sa banggitin lamang ang mga file ng header ng gumagamit, hindi ang mga file ng header ng system.
-x c
-x c ++
-x layunin-c
-x assembler-with-cpp
Tukuyin ang pinagmulang wika: C, C++, Objective-C, o assembly. Wala itong kinalaman
na may pagsunod sa mga pamantayan o mga extension; pinipili lang nito kung aling base syntax ang pupuntahan
asahan. Kung wala kang ibibigay sa mga opsyong ito, ihihinuha ng cpp ang wika mula sa
extension ng source file: .c, . Cc, .m, O .S. Ilang iba pang karaniwang extension para sa
Kinikilala din ang C++ at pagpupulong. Kung hindi nakikilala ng cpp ang extension, ito
ituturing ang file bilang C; ito ang pinaka-generic na mode.
tandaan: Ang mga nakaraang bersyon ng cpp ay tinanggap a -lang opsyon na pinili pareho ang
wika at ang antas ng pagsunod sa mga pamantayan. Ang pagpipiliang ito ay inalis, dahil
sumasalungat ito sa -l pagpipilian.
-std=pamantayan
-ansi
Tukuyin ang pamantayan kung saan dapat sumunod ang code. Sa kasalukuyan, alam ng CPP ang tungkol sa C
at mga pamantayan ng C++; ang iba ay maaaring idagdag sa hinaharap.
pamantayan maaaring isa sa:
"c90"
"c89"
"iso9899:1990"
Ang pamantayang ISO C mula 1990. c90 ay ang nakagawiang shorthand para sa bersyong ito ng
ang pamantayan.
Ang -ansi ang opsyon ay katumbas ng -std=c90.
"iso9899:199409"
Ang 1990 C standard, gaya ng amyendahan noong 1994.
"iso9899:1999"
"c99"
"iso9899:199x"
"c9x"
Ang binagong pamantayang ISO C, na inilathala noong Disyembre 1999. Bago ilathala, ito
ay kilala bilang C9X.
"iso9899:2011"
"c11"
"c1x"
Ang binagong pamantayang ISO C, na inilathala noong Disyembre 2011. Bago ilathala, ito
ay kilala bilang C1X.
"gnu90"
"gnu89"
Ang 1990 C standard at mga extension ng GNU. Ito ang default.
"gnu99"
"gnu9x"
Ang 1999 C standard at mga extension ng GNU.
"gnu11"
"gnu1x"
Ang 2011 C standard at mga extension ng GNU.
"c++98"
Ang 1998 ISO C++ standard plus amendments.
"gnu++98"
Katulad ng -std=c++98 kasama ang mga extension ng GNU. Ito ang default para sa C++ code.
-Ako- Hatiin ang isamang landas. Anumang mga direktoryo na tinukoy sa -I mga pagpipilian bago -Ako- ay
hinanap lamang ang mga header na hiniling na may "#include "file""; hindi sila hinahanap
"#isamafile>". Kung ang mga karagdagang direktoryo ay tinukoy sa -I mga pagpipilian pagkatapos ng
-Ako-, ang mga direktoryo na iyon ay hinahanap para sa lahat # isama mga direktiba
Sa karagdagan, -Ako- pinipigilan ang paggamit ng direktoryo ng kasalukuyang direktoryo ng file bilang
ang unang direktoryo ng paghahanap para sa "#include "file"".
Ang opsyon na ito ay hindi na ginagamit.
-nostdinc
Huwag maghanap sa mga karaniwang direktoryo ng system para sa mga file ng header. Tanging ang mga direktoryo
tinukoy mo kasama ng -I mga opsyon (at ang direktoryo ng kasalukuyang file, kung
naaangkop) ay hinahanap.
-nostdinc++
Huwag maghanap ng mga file ng header sa mga karaniwang direktoryo na partikular sa C++, ngunit gawin pa rin
hanapin ang iba pang karaniwang mga direktoryo. (Ginagamit ang opsyong ito kapag binubuo ang C++
aklatan.)
-isama file
paraan file na parang "#include "file"" ang lumabas bilang unang linya ng pangunahing source
file. Gayunpaman, hinanap ng unang direktoryo file ay gumagana ang preprocessor
direktoryo sa halip of ang direktoryo na naglalaman ng pangunahing source file. Kung hindi natagpuan
doon, hinahanap ito sa natitirang bahagi ng "#include "..."" search chain bilang
Normal.
Kung maraming -isama Ang mga pagpipilian ay ibinigay, ang mga file ay kasama sa pagkakasunud-sunod ng mga ito
lalabas sa command line.
-imacros file
Eksakto tulad ng -isama, maliban sa anumang output na ginawa sa pamamagitan ng pag-scan file ay itinapon
malayo. Ang mga macro na tinukoy nito ay nananatiling tinukoy. Pinapayagan ka nitong makuha ang lahat ng mga macro
mula sa isang header nang hindi rin pinoproseso ang mga deklarasyon nito.
Lahat ng mga file na tinukoy ni -imacros ay naproseso bago ang lahat ng mga file na tinukoy ng -isama.
-idirafter dir
Maghanap dir para sa mga file ng header, ngunit gawin ito pagkatapos lahat ng mga direktoryo na tinukoy sa -I at ang
Ang mga karaniwang direktoryo ng system ay naubos na. dir ay itinuturing bilang isang sistema kasama
direktoryo. Kung dir nagsisimula sa "=", pagkatapos ay ang "=" ay papalitan ng sysroot
unlapi; tingnan mo --sysroot at -isysroot.
-iprefix unlapi
Tukuyin unlapi bilang unlapi para sa kasunod -iwithprefix mga pagpipilian. Kung ang unlapi
kumakatawan sa isang direktoryo, dapat mong isama ang pangwakas /.
-iwithprefix dir
-iwithprefixbefore dir
Mag-aplay dir sa prefix na tinukoy dati na may -iprefix, at idagdag ang resulta
direktoryo sa isama ang landas ng paghahanap. -iwithprefixbefore inilalagay ito sa parehong lugar -I
gagawin; -iwithprefix inilalagay kung saan -idirafter ay.
-isysroot dir
Ang pagpipiliang ito ay tulad ng --sysroot opsyon, ngunit nalalapat lamang sa mga file ng header (maliban sa
Mga target ni Darwin, kung saan nalalapat ito sa parehong mga file ng header at mga aklatan). Tingnan ang
--sysroot opsyon para sa karagdagang impormasyon.
-imultilib dir
paggamit dir bilang isang subdirectory ng direktoryo na naglalaman ng mga header ng C++ na tukoy sa target.
-isystem dir
Maghanap dir para sa mga file ng header, pagkatapos ng lahat ng mga direktoryo na tinukoy ni -I ngunit bago ang
karaniwang mga direktoryo ng system. Markahan ito bilang isang direktoryo ng system, upang maging pareho ito
espesyal na pagtrato gaya ng inilalapat sa mga karaniwang direktoryo ng system.
If dir nagsisimula sa "=", pagkatapos ay ang "=" ay papalitan ng sysroot prefix; tingnan mo
--sysroot at -isysroot.
-iquote dir
Maghanap dir para lamang sa mga file ng header na hiniling na may "#include "file""; hindi sila
hinanap ang "#includefile>", bago ang lahat ng mga direktoryo na tinukoy ni -I at bago ang
karaniwang mga direktoryo ng system.
If dir nagsisimula sa "=", pagkatapos ay ang "=" ay papalitan ng sysroot prefix; tingnan mo
--sysroot at -isysroot.
-fdirectives-lamang
Kapag nag-preprocess, pangasiwaan ang mga direktiba, ngunit huwag palawakin ang mga macro.
Ang pag-uugali ng opsyon ay nakasalalay sa -E at -fpreprocessed mga pagpipilian.
may -E, ang preprocessing ay limitado sa paghawak ng mga direktiba gaya ng "#define",
"#ifdef", at "#error". Iba pang mga pagpapatakbo ng preprocessor, tulad ng macro expansion at
hindi ginaganap ang trigraph conversion. Bilang karagdagan, ang -DD ang opsyon ay hayagang
pinagana.
may -fpreprocessed, ang predefinition ng command line at karamihan sa mga builtin na macro ay
may kapansanan. Ang mga macro gaya ng "__LINE__", na nakadepende sa konteksto, ay pinangangasiwaan
karaniwan. Ito ay nagbibigay-daan sa pagsasama-sama ng mga file na dati nang naproseso gamit ang "-E
-fdirectives-lamang".
Sa pareho -E at -fpreprocessed, ang mga patakaran para sa -fpreprocessed unahin. Ito
nagbibigay-daan sa buong preprocessing ng mga file na dati nang na-preprocess gamit ang "-E
-fdirectives-lamang".
-fdollars-in-identifiers
Tanggapin $ sa mga identifier.
-fextended-identifiers
Tanggapin ang mga pangkalahatang pangalan ng character sa mga identifier. Ang pagpipiliang ito ay pinagana bilang default
para sa C99 (at mas bago sa mga karaniwang bersyon ng C) at C++.
-fno-canonical-system-header
Kapag nag-preprocess, huwag paikliin ang mga path ng header ng system gamit ang canonicalization.
-fpreprocessed
Ipahiwatig sa preprocessor na ang input file ay na-preprocess na. Ito
pinipigilan ang mga bagay tulad ng macro expansion, trigraph conversion, escaped newline splicing,
at pagproseso ng karamihan sa mga direktiba. Kinikilala at inaalis pa rin ng preprocessor
mga komento, upang maipasa mo ang isang file na na-preprocess na gamit ang -C sa compiler na wala
mga problema. Sa mode na ito ang pinagsamang preprocessor ay higit pa sa isang tokenizer
para sa mga dulo sa harap.
-fpreprocessed ay implicit kung ang input file ay may isa sa mga extension .i, .ii or .mi.
Ito ang mga extension na ginagamit ng GCC para sa mga preprocessed na file na ginawa ni -save-temps.
-ftabstop=lapad
Itakda ang distansya sa pagitan ng mga tab stop. Nakakatulong ito sa preprocessor na mag-ulat ng tamang column
mga numero sa mga babala o error, kahit na lumitaw ang mga tab sa linya. Kung ang halaga ay mas mababa
kaysa sa 1 o higit sa 100, ang opsyon ay binabalewala. Ang default ay 8.
-fdebug-cpp
Ang pagpipiliang ito ay kapaki-pakinabang lamang para sa pag-debug ng GCC. Kapag ginamit sa -E, nagtatapon ng pag-debug
impormasyon tungkol sa mga mapa ng lokasyon. Ang bawat token sa output ay nauunahan ng dump ng
ang mapa na kinabibilangan nito. Ang dump ng mapa na naglalaman ng lokasyon ng isang token
maaring maging:
{"P":F ;"F":F ;"L": ;"C": ;"S": ;"M": ;"E": ,"loc": }
Kapag ginamit nang wala -E, walang epekto ang opsyong ito.
-ftrack-macro-expansion[=antas]
Subaybayan ang mga lokasyon ng mga token sa mga macro expansion. Pinapayagan nito ang compiler na maglabas
diagnostic tungkol sa kasalukuyang macro expansion stack kapag may naganap na error sa compilation
isang macro expansion. Ang paggamit ng opsyong ito ay ginagawang kumonsumo ang preprocessor at ang compiler
higit pang memorya. Ang antas Maaaring gamitin ang parameter upang piliin ang antas ng katumpakan ng token
pagsubaybay sa lokasyon kaya binabawasan ang pagkonsumo ng memorya kung kinakailangan. Halaga 0 of
antas i-de-activate ang opsyong ito na parang hindi -ftrack-macro-expansion ay naroroon sa
ang command line. Halaga 1 sinusubaybayan ang mga lokasyon ng mga token sa isang degradong mode para sa kapakanan ng
minimal na memory overhead. Sa mode na ito lahat ng mga token na nagreresulta mula sa pagpapalawak ng isang
argument ng isang function-like macro ay may parehong lokasyon. Halaga 2 sinusubaybayan ang mga token
ganap na mga lokasyon. Ang halagang ito ay ang pinaka-gutom sa memorya. Kapag ibinigay ang pagpipiliang ito
walang argumento, ang default na halaga ng parameter ay 2.
Tandaan na ang "-ftrack-macro-expansion=2" ay naka-activate bilang default.
-fexec-charset=charset
Itakda ang execution character set, na ginagamit para sa string at character constants. Ang default
ay UTF-8. charset maaaring anumang encoding na sinusuportahan ng "iconv" library ng system
gawain.
-fwide-exec-charset=charset
Itakda ang wide execution character set, na ginagamit para sa wide string at character constants.
Ang default ay UTF-32 o UTF-16, alinman ang tumutugma sa lapad ng "wchar_t". Bilang
sa -fexec-charset, charset maaaring maging anumang encoding na sinusuportahan ng "iconv" ng system
gawain sa silid-aklatan; gayunpaman, magkakaroon ka ng mga problema sa mga pag-encode na hindi akma
eksakto sa "wchar_t".
-finput-charset=charset
Itakda ang input character set, na ginagamit para sa pagsasalin mula sa character set ng input
file sa source character set na ginamit ng GCC. Kung hindi tinukoy ng lokal, o GCC
hindi makuha ang impormasyong ito mula sa lokal, ang default ay UTF-8. Ito ay maaaring
na-override ng alinman sa locale o opsyong command-line na ito. Sa kasalukuyan ang utos-
inuuna ang opsyon sa linya kung may salungatan. charset maaaring maging anumang encoding
suportado ng "iconv" library routine ng system.
-fworking-directory
Paganahin ang pagbuo ng mga linemarker sa preprocessor na output na hahayaan ang compiler
alamin ang kasalukuyang gumaganang direktoryo sa oras ng preprocessing. Kapag ang pagpipiliang ito ay
pinagana, ang preprocessor ay maglalabas, pagkatapos ng paunang linemarker, ng pangalawang linemarker
kasama ang kasalukuyang gumaganang direktoryo na sinusundan ng dalawang slash. Gagamitin ito ng GCC
direktoryo, kapag ito ay naroroon sa preprocessed input, bilang ang direktoryo na inilabas bilang
ang kasalukuyang gumaganang direktoryo sa ilang mga format ng impormasyon sa pag-debug. Ang pagpipiliang ito ay
implicitly na pinagana kung ang impormasyon sa pag-debug ay pinagana, ngunit maaari itong pigilan sa
ang negadong anyo -fno-working-directory. Kung ang -P ang bandila ay naroroon sa utos
linya, ang opsyong ito ay walang epekto, dahil walang "#line" na mga direktiba ang ilalabas.
-fno-show-column
Huwag mag-print ng mga numero ng column sa mga diagnostic. Maaaring kailanganin ito kung ang mga diagnostic ay
ini-scan ng isang program na hindi nakakaintindi sa mga numero ng column, gaya ng
dejagnu.
-A predicate=sagutin
Gumawa ng paninindigan gamit ang panaguri predicate at sagutin sagutin. Ang form na ito ay
mas gusto sa mas lumang anyo -A predicate(sagutin), na sinusuportahan pa rin, dahil ito
ay hindi gumagamit ng mga espesyal na character ng shell.
-A -predicate=sagutin
Kanselahin ang isang assertion na may panaguri predicate at sagutin sagutin.
-dCHARS
CHARS ay isang sequence ng isa o higit pa sa mga sumusunod na character, at hindi dapat
pinangungunahan ng isang espasyo. Ang ibang mga character ay binibigyang-kahulugan ng compiler proper, o
nakalaan para sa mga hinaharap na bersyon ng GCC, at sa gayon ay tahimik na binabalewala. Kung tinukoy mo
mga character na ang pag-uugali ay sumasalungat, ang resulta ay hindi natukoy.
M Sa halip na ang normal na output, bumuo ng isang listahan ng # tukuyin mga direktiba para sa lahat ng
mga macro na tinukoy sa panahon ng pagpapatupad ng preprocessor, kabilang ang paunang natukoy
mga macro. Nagbibigay ito sa iyo ng paraan upang malaman kung ano ang paunang natukoy sa iyong bersyon ng
ang preprocessor. Ipagpalagay na wala kang file foo.h, ang utos
pindutin ang foo.h; cpp -dM foo.h
ipapakita ang lahat ng paunang natukoy na macro.
Kung gumagamit ka ng -dM wala ang -E pagpipilian, -dM ay binibigyang-kahulugan bilang kasingkahulugan ng
-fdump-rtl-mach.
D katulad M maliban sa dalawang aspeto: ginagawa nito hindi isama ang mga paunang natukoy na macro, at ito
output kapwa ang # tukuyin mga direktiba at ang resulta ng preprocessing. Parehong uri
ng output pumunta sa karaniwang output file.
N katulad D, ngunit naglalabas lamang ng mga macro name, hindi ang kanilang mga pagpapalawak.
I Pagbubuhos # isama mga direktiba bilang karagdagan sa resulta ng preprocessing.
U katulad D maliban na ang mga macro lamang na pinalawak, o nasubok ang pagkatukoy
sa preprocessor direktiba, ay output; ang output ay naantala hanggang sa paggamit o
pagsubok ng macro; at #undef Ang mga direktiba ay output din para sa mga nasubok na macro ngunit
hindi natukoy sa panahong iyon.
-P Pigilan ang pagbuo ng mga linemarker sa output mula sa preprocessor. Ito ay maaaring
kapaki-pakinabang kapag nagpapatakbo ng preprocessor sa isang bagay na hindi C code, at ipapadala
sa isang programa na maaaring malito ng mga linemarker.
-C Huwag itapon ang mga komento. Ang lahat ng mga komento ay ipinapasa sa output file, maliban
para sa mga komento sa mga naprosesong direktiba, na tinatanggal kasama ng direktiba.
Dapat kang maging handa para sa mga side effect kapag gumagamit -C; nagiging sanhi ito ng preprocessor sa
ituring ang mga komento bilang mga token sa kanilang sariling karapatan. Halimbawa, lumalabas ang mga komento sa
simula ng kung ano ang magiging isang direktiba na linya ay may epekto ng paggawa ng linyang iyon sa isang
ordinaryong linya ng pinagmulan, dahil ang unang token sa linya ay hindi na a #.
-CC Huwag itapon ang mga komento, kabilang ang habang macro expansion. Ito ay tulad ng -C, maliban
na ang mga komentong nakapaloob sa loob ng mga macro ay ipinapasa din sa output file kung saan
ang macro ay pinalawak.
Bilang karagdagan sa mga side-effects ng -C opsyon, ang -CC ang opsyon ay nagiging sanhi ng lahat ng C++-style
mga komento sa loob ng isang macro na iko-convert sa C-style na mga komento. Ito ay upang maiwasan mamaya
paggamit ng macro na iyon mula sa hindi sinasadyang pagkomento sa natitirang linya ng pinagmulan.
Ang -CC Ang opsyon ay karaniwang ginagamit upang suportahan ang mga komento ng lint.
-tradisyonal-cpp
Subukang gayahin ang pag-uugali ng mga makalumang C preprocessors, kumpara sa ISO C
mga preprocessor.
-trigraphs
Iproseso ang mga pagkakasunud-sunod ng trigraph.
-mapa muli
Paganahin ang espesyal na code upang gumana sa paligid ng mga file system na pinahihintulutan lamang ang napakaikling file
mga pangalan, tulad ng MS-DOS.
- Tumulong
--target-tulong
Mag-print ng text na naglalarawan sa lahat ng mga opsyon sa command-line sa halip na mag-preprocess ng kahit ano.
-v Verbose mode. I-print ang numero ng bersyon ng GNU CPP sa simula ng pagpapatupad, at
iulat ang huling anyo ng isamang landas.
-H I-print ang pangalan ng bawat header file na ginamit, bilang karagdagan sa iba pang normal na aktibidad. Bawat isa
pangalan ay naka-indent upang ipakita kung gaano kalalim ang # isama stack ito. Precompiled na header
ang mga file ay naka-print din, kahit na sila ay napag-alamang hindi wasto; isang di-wastong precompiled
header file ay naka-print na may ...x at isang wastong may ...! .
-version
--bersyon
I-print ang numero ng bersyon ng GNU CPP. Sa isang gitling, magpatuloy sa preprocess gaya ng normal.
Sa dalawang gitling, lumabas kaagad.
Kapaligiran
Inilalarawan ng seksyong ito ang mga variable ng kapaligiran na nakakaapekto sa kung paano gumagana ang CPP. Kaya mo
gamitin ang mga ito upang tukuyin ang mga direktoryo o prefix na gagamitin kapag naghahanap ng mga file na kasama, o sa
kontrolin ang output ng dependency.
Tandaan na maaari mo ring tukuyin ang mga lugar na hahanapin gamit ang mga opsyon gaya ng -I, at kontrol
dependency output na may mga pagpipilian tulad ng -M. Ang mga ito ay nangunguna sa mga variable ng kapaligiran,
na nangunguna naman sa pagsasaayos ng GCC.
CPATH
C_INCLUDE_PATH
CPLUS_INNCLUDE_PATH
OBJC_INNCLUDE_PATH
Ang halaga ng bawat variable ay isang listahan ng mga direktoryo na pinaghihiwalay ng isang espesyal na karakter, marami
gaya ng PATH, kung saan maghahanap ng mga file ng header. Ang natatanging karakter,
Ang "PATH_SEPARATOR", ay nakadepende sa target at tinutukoy sa oras ng pagbuo ng GCC. Para sa Microsoft
Ang mga target na nakabatay sa Windows ay isang semicolon, at para sa halos lahat ng iba pang mga target ito ay a
tutuldok
CPATH tumutukoy sa isang listahan ng mga direktoryo na hahanapin na parang tinukoy -I, Ngunit
pagkatapos ng anumang mga landas na ibinigay kasama -I mga opsyon sa command line. Ang variable ng kapaligiran na ito
ay ginagamit anuman ang wikang paunang pinoproseso.
Ang natitirang mga variable ng kapaligiran ay nalalapat lamang kapag preprocessing ang partikular
wikang ipinahiwatig. Ang bawat isa ay tumutukoy ng isang listahan ng mga direktoryo na hahanapin na parang
tinukoy na may -isystem, ngunit pagkatapos ng anumang mga landas na ibinigay sa -isystem mga pagpipilian sa
command line.
Sa lahat ng mga variable na ito, ang isang walang laman na elemento ay nagtuturo sa compiler na hanapin ang kasalukuyan nito
gumaganang direktoryo. Maaaring lumitaw ang mga walang laman na elemento sa simula o dulo ng isang landas. Para sa
halimbawa, kung ang halaga ng CPATH ay ":/special/include", na may parehong epekto sa
-NS. -Ako/espesyal/kasama.
DEPENDENCE_OUTPUT
Kung nakatakda ang variable na ito, tinutukoy ng value nito kung paano mag-output ng mga dependency para sa Make based
sa mga non-system header file na pinoproseso ng compiler. Ang mga file ng header ng system ay
hindi pinansin sa output ng dependency.
Ang halaga ng mga DEPENDENCE_OUTPUT ay maaaring isang file name lang, kung saan ang Make rules
ay nakasulat sa file na iyon, na hinuhulaan ang target na pangalan mula sa pangalan ng source file. O ang
ang halaga ay maaaring magkaroon ng anyo file target, kung saan ang mga patakaran ay isinulat sa file file
paggamit target bilang target na pangalan.
Sa madaling salita, ang environment variable na ito ay katumbas ng pagsasama-sama ng mga opsyon -MM
at -MF, na may opsyonal -MT lumipat din.
SUNPRO_DEPENDENCIES
Ang variable na ito ay kapareho ng DEPENDENCE_OUTPUT (tingnan sa itaas), maliban sa sistemang iyon
Ang mga file ng header ay hindi binabalewala, kaya ipinahihiwatig nito -M sa halip na -MM. Gayunpaman, ang
ang pag-asa sa pangunahing input file ay tinanggal.
Gumamit ng cpp online gamit ang mga serbisyo ng onworks.net