Professional Documents
Culture Documents
13. Preprocesorul
2ULFHSURJUDP&vQID]DGHFRPSLODUHWUHFHvQWkLSULQWURSUHSURFHVDUHLDELDDSRL
VH YD JHQHUD FRGXO HFKLYDOHQW vQ DVDPEODUH 3UHSURFHVRUXO GXS FXP vL VSXQH L QXPHOH
IDFHSULPDSURFHVDUHDVXSUDVXUVHL&FRQIRUPGLUHFWLYHORULQFOXVHGLUHFWVDXLQGLUHFWSULQ
LQFOXGHUHGHELOLRWHFLGHFWUHSURJUDPDWRU
'LUHFWLYHOHSUHSURFHVRUXOXLVXQWOLQLLVXUVDOFURUSULPFDUDFWHUGLIHULWGHVSD LLOH
DOEHHVWHGLH]/LQLLOHFDUHFRQ LQGLUHFWLYHDOHSUHSURFHVRUXOXLVXQWHOLPLQDWHGLQWH[WXO
VXUVvQDLQWHFDDFHVWDVILHFLWLWGHFRPSLODWRU3UHSURFHVRUXOvQORFXLHWHRULFHVHFYHQ GH
VSD LLDOEHLQFOXVLYFRPHQWDULLFXXQVLQJXUVSD LX
'LUHFWLYDQXO
2 OLQLH FDUH FRQ LQH QXPDL FDUDFWHUXO vQ DIDU GH HYHQWXDOHOH VSD LL DOEH HVWH
LJQRUDWGHSUHSURFHVRU
13.2. Directivele #GHILQHLundef
GHILQHLGHQWLILFDWRU>>OLVWDBDUJXPHQWH@FRUS@
XQGHILGHQWLILFDWRU
'LUHFWLYD GHILQH GHILQHWH R PDFURLQVWUXF LXQH 'DF PDFURLQVWUXF LXQHD DUH
DUJXPHQWH SDUDQWH]D VWkQJ WUHEXLH V DSDU vQ GHILQL LH OLSLW GH QXPHOH GHILQLW
$UJXPHQWHOH VH VHSDU SULQ YLUJXO &RUSXO PDFURGHILQL LHL QX SRDWH DYHD PDL PXOW GH R
OLQLHVXUVVHSRDWHFRQWLQXDOLQLDFX?
QID]DGHSUHSURFHVDUHDSDUL LDQXPHOXLGHPDFURvQWH[WXOVXUVHYHQWXDOXUPDWGH
R OLVW GH DUJXPHQWH DFWXDOH LQ SDUDQWH]H HVWH vQORFXLW FX FRUSXO GH PDFUR vQ FDUH
SDUDPHWULLIRUPDOLDXIRVWvQORFXL LFXWH[WXOSDUDPHWULORUDFWXDOL
'XS VXEVWLWX LH WH[WXO RE LQXW HVWH FLWLW GLQ QRX SkQ FkQG QX PDL VXQW QHFHVDUH
VXEVWLWX LLGLUHFWLYHOHSUHSURFHVRUXOXLQXVXQWUHFXQRVFXWHvQWH[WXOSURGXVSULQH[SDQGDUHD
XQHL PDFURLQVWUXF LXQL 1XPHOH GH PDFUR QX VXQW UHFXQRVFXWH vQ LUXUL GH FDUDFWHUH VDX
FRPHQWDULL2PDFURLQVWUXF LXQHQXVHSRDWHDSHODUHFXUVLY
/DDSHOXOXQHLPDFURFXDUJXPHQWHQXPDLYLUJXOHOHGHSHSULPXOQLYHOVXQWOXDWHFD
VHSDUDWRDUH GH DUJXPHQWH QX L FHOH FDUH DSDU vQ SDUDQWH]H VDX vQWUH DSRVWURIH VDX
JKLOLPHOH
Q FRUSXO XQXL PDFUR VH SRW IRORVL XUPWRULL RSHUDWRUL FDUH QX DF LRQHD] GHFkW vQ
ID]DGHSUHSURFHVDUH
FDUHGLVSDUHWRWDOQHUPkQvQGQLFLPFDUXQVSD LXL
FDUH SODVDW LQ ID D XQXL DUJXPHQW IRUPDO vO vQORFXLHWH FX DUJXPHQWXO DFWXDO
3/$6$71*+,/,0(/(
'H RELFHL GLUHFWLYD OLQH QX DSDUH vQ SURJUDPHOH VFULVH FX PkQD FL PDL DOHV vQ
SURJUDPHOHJHQHUDWHDXWRPDW'DFQXPHOHGHILLHUOLSVHWHHOUPkQHFHOYDODELOvQDFHO
PRPHQW
QDUJXPHQWHOHGLUHFWLYHLOLQHPDFURLQVWUXF LXQLOHVXQWH[SDQGDWHFDLODGLUHFWLYD
LQFOXGH
13.6. Directiva #error
#error mesaj
(IHFWXOHLFRQVWvQJHQHUDUHDXQXLPHVDMGHHURDUHGHIRUPD
(UURUQXPHBILLHUOLQHQXPUBOLQLH(UURUGLUHFWLYHPHVDM
&RPSLODUHD XQHL GLUHFWLYH HUURU RSUHWH FRPSLODUHD 'H RELFHL DSDUH vQ ILLHUHOH DQWHW
LQFOXVHFXGLUHFWLYDLQFOXGHvQFDGUXOXQHLVHFYHQ HFRPSLODWHFRQGL LRQDW'HH[HPSOX
#if !defined ( __cplusplus )
#error Nu se poate compila decit in C++
#endif
13.7. Directivele #pragma
#pragma argsused
3RDWH DSDUH QXPDL vQ DIDUD XQHL IXQF LL $UH FD HIHFW VXSULPDUHD PHVDMXOXL GH
DYHUWLVPHQW UHIHULWRU OD QHXWLOL]DUHD XQXL SDUDPHWUX IRUPDO GDU QXPDL vQ SULPD IXQF LH
FRPSLODWGXSDSDUL LDGLUHFWLYHL
#pragma exit nume_functie [prioritate]
#pragma startup nume_functie [prioritate]
,QVHUHD] IXQF LLOH FLWDWH GHILQLWH FD YRLG QXPHBIXQFWLH YRLG SHQWUX DSHO vQDLQWH GH
PDLQ UHVSHFWLY GXS WHUPLQDUHD IXQF LHL PDLQ 3ULRULWDWHD HVWH XQ vQWUHJ GH OD OD
)XQF LLOH FX SULRULW L PDL PLFL YRU IL DSHODWH PDL GHYUHPH OD ODQVDUH L PDL WkU]LX OD
WHUPLQDUHDH[HFX LHL3ULRULW LOHGHODODVXQWUH]HUYDWHSHQWUXUXWLQHOHGLQELEOLRWHFLOH
7XUER 'DF SULRULWDWHD OLSVHWH VH LD )XQF LLOH FLWDWH WUHEXLH GHFODUDWH vQDLQWHD
DSDUL LHLGLUHFWLYHL
SUDJPDLQOLQH
$QXQ FRPSLODWRUXO F vQ SURJUDP H[LVW FRG LQOLQH vQ OLPEDM GH DVDPEODUH (VWH
HFKLYDOHQW FX RS LXQHD GH FRPSLODUH % QWkOQLUHD GLUHFWLYHL SUDJPD LQOLQH GDF
RS LXQHD%QXHVWHDFWLYDUHFDHIHFWUHODQVDUHDFRPSLOULLFXRS LXQHD%DFWLYDW
#pragma option
GRUHVFVLPSLHGLFIRORVLUHDXQRUIXQF LLGLQELEOLRWHFvQWUXFkWVXQWUHVFULVHGH
RULFLQHVXSUDvQFUFDUHDIXQF LLORU
6LQWD[DJHQHUDOD
([HPSOX
SHQWUXKHDGHUHSHUVRQDOHV]LFHPILLHUXOWHVWK
#ifndef __TEST
#define __TEST
.......
corpul
.......
#endif
Sau pentru depanare
#if DEBUG
printf(.......);
#endif
Sau daca nu am definite ni;te valori speciale
#ifndef M_PI
#define M_PI 3.1415....
#endif.
6FXUW
6WLO UHFRPDQGDW
H[WHUQ
YDULDELOH JOREDOH
IU
FX FRQWH[WXO
6H UH]ROY
OHJ WXU
)RORVLUHD JRWR