Diferența dintre Inline și Macro în C ++
Conţinut
Macro este o instrucțiune care se extinde în momentul invocării sale. Funcțiile pot fi, de asemenea, definite, cum ar fi macro-urile. În mod similar, funcțiile inline se extind și la punctul invocării sale. O diferență primară între funcția inline și macro este aceea că funcții inline sunt extinse în timpul compilare, si macro-uri sunt extinse atunci când programul este procesat de către preprocesor.
Să studiem diferența dintre linie interioară și macro, cu ajutorul graficului de comparație.
- Diagramă de comparație
- Definiție
- Diferențele cheie
- Concluzie
Diagramă de comparație
Baza pentru comparație | In linie | Macro |
---|---|---|
De bază | Funcțiile în linie sunt analizate de compilator. | Macro-urile sunt extinse de preprocesor. |
Sintaxă | inline return_type nume_funcție (parametri) {. . . } | #define macro_name char_sequence |
Cuvinte cheie utilizate | in linie | #defini |
Definit | Poate fi definit în cadrul sau în afara clasei. | Este întotdeauna definit la începutul programului. |
Evaluare | Evaluează argumentul o singură dată. | Evaluează argumentul de fiecare dată când este utilizat în cod. |
Expansiune | Este posibil ca compilatorul să nu încline și să extindă toate funcțiile. | Macro-urile sunt mereu extinse. |
Automatizare | Funcțiile scurte, definite în interiorul clasei sunt efectuate automat pe funcții inline. | Macro-urile ar trebui definite în mod specific. |
accesarea | O funcție de membru inline poate accesa datele membrilor clasei. | Macro-urile nu pot fi niciodată membrii clasei și nu pot accesa datele membrilor clasei. |
terminare | Definiția funcției inline se încheie cu parantezele cretate la sfârșitul funcției inline. | Definiția macro se termină cu noua linie. |
debugging | Debugging-ul este ușor pentru o funcție inline, deoarece verificarea erorilor se face în timpul compilării. | Debugging-ul devine dificil pentru macro-uri, deoarece verificarea erorilor nu are loc în timpul compilării. |
Legare | O funcție inline leagă foarte bine toate enunțurile din corpul funcției, iar corpul funcției începe și se termină cu parantezele cret. | O macrocomunicare se confruntă cu problema de legare dacă are mai multe afirmații, deoarece nu are simbol de încheiere. |
Definiția Inline
O funcție inline arată ca o funcție obișnuită, dar este precedată de cuvântul cheie „in linie„. Funcțiile în linie sunt funcții de lungime scurtă care se extind la punctul de invocare, în loc să fie apelate. Să înțelegem funcțiile inline cu un exemplu.
#include În programul de mai sus, am declarat și definit, funcția inițializează (), ca o funcție inline în clasa „exemplu”. Codul funcției de inițializare () se va extinde acolo unde este invocat de obiectul clasei „exemplu”. Afișarea funcției (), definită în exemplul clasei nu este declarată inline, dar poate fi considerată inline de către compilator, ca în C ++ funcția definită în interiorul clasei este făcută automat în linie de către compilator, luând în considerare lungimea funcției. Macro este o „directivă a preprocesoarelor”. Înainte de compilare, programul este examinat de preprocesor și unde găsește macrocomanda în program, înlocuiește macro-ul prin definiția sa. Prin urmare, macrocomanda este considerată „înlocuitor”. Să studiem macro-ul cu un exemplu. #include În codul de mai sus, am declarat o funcție macro GREAT (), care compară și găsește numărul mai mare al ambilor parametri. Puteți observa că nu există niciun punct și virgulă pentru a încheia macro-ul, deoarece macro-ul este încheiat doar de noua linie. Deoarece o macrocomandă este doar o înlocuire, acesta va extinde codul macro-ului acolo unde este invocat. Funcțiile în linie sunt mult mai convingătoare decât funcția macro. C ++ oferă, de asemenea, o modalitate mai bună de a defini o constantă, care folosește un cuvânt cheie „const”.
Definiția Macro
concluzii: