__line__c ++ makro

__line__c ++ makro
Forprosessorene er de programmene som har kildekoden vår før kompileringsprosessen starter. Disse forprosessorene inneholder noen direktiver som #Define, #include osv. Det er totalt 4 hovedtyper av forbehandlingsdirektiver. En av dem er makroer. Makroer inneholder et stykke kode i et program som får et spesifikt navn. Når kompilatoren møter navnet, erstatter kompilatoren navnet med den virkelige/faktiske koden. Direktivet '#Define' definerer en makro.

Makro er en forkortelse som står for noe kode på et programmeringsspråk. Disse makroene er med på å forenkle og redusere koden for å unngå redundans og repeterende koding. Slik at feil også reduseres som for det meste oppstår på grunn av gjentatt koding. Den største fordelen angående makroer er at den konverterer koden og lager et mer lesbart monteringsprogram.

Makroutvidelse

En makro inneholder et navn, et sett med formelle parametere og kodekroppen. Makronavnet brukes med settet med parametere og erstattet av noe kode som genereres av kroppen. Dette danner en makroutvidelse. Dette gjør at programmereren kan lage og definere pseudo -operasjoner, de operasjonene som er ønskelige og de som ikke er implementert som prosessorinstruksjoner. Makro har en spesifikk kvalitet der det skriver programmet automatisk. Navnet makro er skrevet som det er som et nøkkelord i koden. Det fungerer som en oppfordring til den spesifikke makroen, akkurat som en funksjonssamtale. Da erstattes dette navnet av en annen kode for makroorgan som vi har beskrevet ovenfor. Denne erstatningen av samtalen med den behandlede kopien er utvidelsen av makroanropet. Og det brukes også i både C og C ++.

Når en makro er definert, kan vi ikke omdefinere den til en annen verdi uten å fjerne den første opprinnelige definisjonen. Men det er mulig å omdefinere makroen med samme definisjon av allerede definerte makroer. #UNDEF -direktivet er ansvarlig for å fjerne definisjonen av en makro. Når definisjonen er fjernet, kan vi nå omdefinere makroen med en annen verdi.

Makroer i c++

Det er to typer:

  1. Objektlignende makroer
  2. Funksjonslignende makroer

Objektlignende makroer

Objektlignende makroer tar ikke noe argument. Dette er identifikatorer som erstattes av verdien. Disse brukes mest til å representere numeriske verdier og konstanter.

#Define PL 3.17

PL er navnet på makroen som vil bli erstattet av verdien 3.17.

Funksjonslignende makroer

Denne typen makroer kan godta argumenter. Disse makroene ser ut som en funksjonsanrop. Ta for eksempel et eksempel der Max er navnet på makroen.

#Define Max (a, b) ((a)<(b)?(a): (b))

Makroer genererer vanligvis ikke funksjonssamtalene.I C ++ er inline -funksjoner å foretrekke.

Forhåndsdefinerte makroer

Microsoft C/C ++ kompilator som har MSVC forhåndsdefinerte makroer som er avhengige av språket C ++, målet for samlingen og kompilatoralternativene. MSVC støtter forhåndsdefinerte forprosessormakroer som kreves av ANSI/ISO C99 -standarder. Disse forhåndsdefinerte makroene bruker ingen argumenter og kan verken omdefineres.

Mange forhåndsdefinerte makroer kan brukes i C/C ++ kildekode/programmer. Noen av dem er beskrevet her som er mest brukt.

__Dato__
Samlingsdatoen for programmet i filen er representert av denne funksjonsmakroen. Datoen er en streng for format for månedsdagen og er en konstant verdi. Denne typen makro er alltid definert.

__Tid__
Det skildrer tiden for oversettelsen av enheten som er forbehandlet. Tilsvarende har det et spesifikt format der det er skrevet timer: minutter: sekunder, på samme måte som tiden returneres.

Denne typen makro er også alltid definert.

__Fil__
Dette representerer navnet på den gjeldende filen. Det utvides til en bokstavelig karakterstreng. Som sikrer at banen som fører til filen vises. Det er en alltid definert makro.

__Linje__
Det representerer linjenummeret i heltallformatet til en nåværende kilde. Denne makroen er definert som andre, og verdien endres ved hjelp av #Line.

Nå vil vi trekke frem noen eksempler på __line__c ++ makrofunksjon.

__Linje__
For å få et inntrykk av arbeidet med denne makroen, har vi her sitert et eksempel. For det første brukes et bibliotek for inngangs- og utgangsstrømmen. Da har vi brukt en funksjonsfeillogg som opprettholder feilloggen. Dette har en parameter for å godta linjen i form av en streng og en melding. Denne funksjonen vil vise linjenummeret med meldingen som sendes fra hovedprogrammet til makroen.

#Define Log (MSG) feillog (__line__, MSG)

Etter det har vi definert en makro. Dette vil akseptere meldingslinjestrengen fra hovedfunksjonen som har bestått som et argument når denne makroen kalles. Og på samme måte kalles feillogfunksjonen med linjemakro og meldingen som parametere. Filen vil bli lagret med en utvidelse av .C kildekodefil. Når vi må se Linux -plattformresultatene, gå til terminalen og bruke kommandoene for å kompilere og utføre filen. Bruk en G ++ kompilator for C++.

$ g ++ -o f f.c
$ ./f

Du kan se at selv med mellomrommene, identifiseres linjenummeret gjennom linjemakroen. Fra dette eksemplet har du sett funksjonaliteten til en __line__ makro. Men i neste eksempel er alle makroene samlet i programmet. Vi har brukt 'cout' for å trykke linjer. Hver linje inneholder en annen makro i den, og den verdien vises. For eksempel for datoen vi har brukt:

Std :: cout << ("Date :%s\n" , __Date) << std ::endl;

Nå ser vi utdataene. Du kan se at filnavnet, kompilasjonsdatoen, sammenstillingstidspunktet og det gjeldende linjenummeret vises veldig effektivt gjennom et enkelt stykke kode for hver makro.

Bruker/fordeler med makroer

  • Mindre plass er okkupert da den konverterer erklæringen om lange variabler til korte.
  • Når en makro brukes med et navn som gir den nåværende uttalelsen en betydning, er det lettere å forstå makroen enn de lange kodene.
  • Makroer er ikke i stand til å rydde opp eller fjerne søpla osv., alene. Det avhenger av programmereren, og han bestemmer når makroen er designet for å avslutte og kreves for å være ren slik at den andre filen kan bruke makroen enkelt.
  • Utførelseshastigheten til et program økes, noe som er en stor fordel ved å bruke en makro i koden.

Konklusjon

'__line__c ++ makro' er en artikkel skrevet for å utdype de grunnleggende funksjonalitetene til makro ved å beskrive typene og også de forhåndsdefinerte makroene og videreføre deres typer. Alle disse funksjonene blir forklart ved hjelp av et eksempel. Makroer implementeres enkelt og krever mindre tid i samlingen av kodene. Disse funksjonene er designet av de programmererne som ønsker å lage innovasjoner og forhold ved hjelp av et lite stykke kode i basekildeprogrammet. For det formålet, til slutt, er artikkelen ledsaget av bruk av makro i kildekode og beskriver hvordan de er gunstige i noen aspekter.