__attribute__((konstruktør)) og __attribute__((destructor)) syntakser i C

Skriv to funksjoner i C ved å bruke GCC-kompilatoren, hvorav den ene kjøres før hovedfunksjonen og den andre kjøres etter hovedfunksjonen. GCC-spesifikke syntakser : 1. __attribute__((konstruktør)) syntaks : Denne spesielle GCC-syntaksen når den brukes med en funksjon utfører den samme funksjonen ved oppstart av programmet, dvs. før hoved() funksjon. 2. __attribute__((destruktor)) syntaks: Denne spesielle GCC-syntaksen når den brukes med en funksjon, utfører den samme funksjonen rett før programmet avsluttes gjennom _exit, dvs. etter hoved() funksjon. Forklaring : Måten konstruktører og destruktorer fungerer på er at den delte objektfilen inneholder spesielle seksjoner (.ctors og .dtors på ELF) som inneholder referanser til funksjonene merket med henholdsvis konstruktør- og destruktorattributtene. Når biblioteket er lastet/utlastet, sjekker det dynamiske lasterprogrammet om slike seksjoner eksisterer og kaller i så fall opp funksjonene som er referert til der. Noen få punkter angående disse er verdt å merke seg: 1. __attribute__((konstruktør)) kjører når et delt bibliotek lastes vanligvis under programoppstart. 2. __attribute__((destruktor)) kjører når det delte biblioteket er lastet ut, vanligvis ved programavslutning. 3. De to parentesene er antagelig for å skille dem fra funksjonskall. 4. __attributt__ er en GCC-spesifikk syntaks; ikke en funksjon eller en makro. Førerkode : CPP
   // C program to demonstrate working of   // __attribute__((constructor)) and   // __attribute__((destructor))   #include      // Assigning functions to be executed before and   // after main()   void     __attribute__  ((  constructor  ))     calledFirst  ();   void     __attribute__  ((  destructor  ))     calledLast  ();   void     main  ()   {      printf  (  '  n  I am in main'  );   }   // This function is assigned to execute before   // main using __attribute__((constructor))   void     calledFirst  ()   {      printf  (  '  n  I am called first'  );   }   // This function is assigned to execute after   // main using __attribute__((destructor))   void     calledLast  ()   {      printf  (  '  n  I am called last'  );   }   
Output:
I am called first I am in main I am called last  
Lag quiz