Pragma, programare în C și c

Directiva #pragma este un standard definit de ANSI C, pentru punerea în aplicare a directivelor, da-ing compilator diverse instrucțiuni. Vedere #pragma standard următoare:







în cazul în care numele - directiva numele #pragma. Borland definește 14 directive #pragma:

argused
anon_struct
codeseg
comentariu
ieșire
hdrfile
hdrstop
inline
intrinsec
mesaj
opțiune
saveregs
pornire
avertiza

Directiva argused ar trebui să stea în fața unei funcții. Este utilizat pentru a elimina AVERTISMENT-tiile, dacă argumentul funcției este precedat de un #pragma, acesta nu este utilizat în corpul funcției.

Pentru a permite utilizarea structurilor anonime indică Directiva anon_struct. Cu directivele Pomo-schyu codeseg puteți specifica segmentului, de clasă sau de grup utilizate funcții.

Directiva definește ieșirea uneia sau mai multor funcții care urmează să fie numit la sfârșitul programelor, suntem. Directiva definește pornire una sau mai multe funcții numite atunci când pro-gram rula. Acestea sunt după cum urmează:

#pragma prioritate de ieșire FUNCTION_NAME

#pragma prioritate pornire FUNCTION_NAME

Prioritate - această valoare 64-255 (valori de la 0 la 63 sunt rezervate). Prioritate determină ordinea apelurilor de funcții. În cazul în care nu este specificat prioritatea, implicit presupune Xia 100. Toate funcțiile efectuate la începutul sau la sfârșitul programului, trebuie să Ad-lyatsya urmează:
void f (void);

Următorul exemplu definește functia start () care este executat la începutul programului.

#include
void start (void);
#pragma de pornire începe 65
int main (void)
printf ( "In principal \ n");
return 0;
>
void start (void)
printf ( "In start \ n");
>

Ca urmare a programului apare pe ecran:

La Start
În principal

După cum arată acest exemplu, este necesar să se prevadă prototipul funcția de a utiliza #pragma directivă.







Cu hdrfile directive pot specifica numele de fișier utilizat pentru a stoca antetele pre-compilate. El are forma

#pragma hdrfile "nume de fișier. csm"

în cazul în care numele fișierului - un nume de fișier (cu extensia csm).

Rapoarte Directiva hdrstop Borland C ++ cu privire la necesitatea de a opri Precompilarea Zago-lovochnyh fișiere.

De asemenea, are directiva în linie, care are următoarea formă:

Ea spune compilatorului că programul are un cod de asamblare intern. La crearea cel mai rapid cod, compilatorul trebuie să știe că programul conține cod de asamblare.

Folosind directiva intrinsecă, puteți specifica compilator la un cod de funcție de substituție în loc să o sun. Directiva are forma:

#pragma FUNCTION_NAME intrinsecă

în cazul în care funcname - numele acestei funcții, ceea ce este necesar să se facă în interior.

Dacă selectați Inline Funcția Intrinsec în ISR (mediu dezvoltator integrat), sau de a folosi opțiunea -Oi atunci când sunt compilate cu ajutorul compilatorului liniei, Borland-aw-automate fac următoarele funcții interne:

alloca memcpy stpcpy strcpy strncpy
fabs memset strcat strlen strnset
memchr rotl strchr strncat strrchr
memcmp ROTR strcmp strncmp

Folosind directiva intrinsecă, puteți anula funcția, care va fi intern: #pragma FUNCTION_NAME intrinsecă

Directiva mesaj vă permite să stabiliți mesajul să fie afișat ca un avertisment atunci când compilarea programului. De exemplu:

#include
#pragma Acest mesaj va fi afișat ca un avertisment.
int main (void)
int i = 10;
printf ( "Acesta este i:. \ n", i);
#pragma Acest mesaj este, de asemenea, afișat ca un avertisment.
return 0;
>

vor exista două mesaje #pragma, fie de ieșire ca o avertizare atunci când compilarea. Când se utilizează IDE acestea vor apărea într-o fereastră mesaje standard.

Opțiunea directivă vă permite să specificați opțiunea de linie de comandă în loc de aceste opțiuni specifice în mod clar în linia de comandă. Acesta este după cum urmează:

Opțiunea #pragma spisok_optsy

De exemplu, următoarea directivă conduce la faptul că acesta conține programul va fi modelul de mare Comp-izolate:

Opțiunea #pragma -ml

Următoarele opțiuni nu pot fi utilizate cu opțiunea de directivă:

--c -e -D -R -F -h
-l -M o- -P -Q -T -S
-U -V-X -Y

Directiva saveregs interzice funcția declarată imensi, schimba oricare dintre registre. Această directivă ar trebui să stea în fața unei funcții, și afectează numai funcția înainte de Koto-o mulțime în valoare de ea.

avertizează Directiva permite sau diverse avertismente. Ea are forma:

#pragma avertizează de instalare

în cazul în care instalația - aceasta este opțiunea de a defini alerte.