Sintaksi __attribute__((konstruktor)) in __attribute__((destructor)) v C

Napišite dve funkciji v C s prevajalnikom GCC, od katerih se ena izvede pred glavno funkcijo, druga pa za glavno funkcijo. GCC specifične sintakse : 1. __atribut__((konstruktor)) sintaksa : Ta posebna sintaksa GCC, ko se uporablja s funkcijo, izvede isto funkcijo ob zagonu programa, tj. glavni () funkcijo. 2. __atribut__((destruktor)) sintaksa : ta posebna sintaksa GCC, ko se uporablja s funkcijo, izvede isto funkcijo tik preden se program zaključi prek _exit, tj. glavni () funkcijo. Razlaga : Konstruktorji in destruktorji delujejo tako, da skupna objektna datoteka vsebuje posebne razdelke (.ctors in .dtors na ELF), ki vsebujejo sklice na funkcije, označene z atributoma konstruktor oziroma destruktor. Ko je knjižnica naložena/razložena, dinamični nalagalni program preveri, ali taki razdelki obstajajo, in če obstajajo, pokliče funkcije, navedene v njih. V zvezi s tem je vredno omeniti nekaj točk: 1. __atribut__((konstruktor)) zažene, ko se knjižnica v skupni rabi običajno naloži med zagonom programa. 2. __atribut__((destruktor)) zažene, ko se knjižnica v skupni rabi običajno razloži ob izhodu iz programa. 3. Dva oklepaja sta verjetno zato, da ju ločimo od funkcijskih klicev. 4. __atribut__ je sintaksa, specifična za GCC; ni funkcija ali makro. Koda voznika : 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  
Ustvari kviz