Sintakse __attribute__((constructor)) i __attribute__((destructor)) u C-u

Napišite dvije funkcije u C-u pomoću GCC prevoditelja od kojih se jedna izvršava prije glavne funkcije, a druga nakon glavne funkcije. Sintakse specifične za GCC : 1. __atribut__((konstruktor)) sintaksa : Ova određena GCC sintaksa kada se koristi s funkcijom izvršava istu funkciju pri pokretanju programa, tj. prije glavni() funkcija. 2. __atribut__((destruktor)) sintaksa : Ova određena GCC sintaksa kada se koristi s funkcijom izvršava istu funkciju neposredno prije nego što program završi kroz _exit tj. nakon glavni() funkcija. Obrazloženje : Način na koji konstruktori i destruktori rade je da dijeljena objektna datoteka sadrži posebne odjeljke (.ctors i .dtors na ELF-u) koji sadrže reference na funkcije označene atributima konstruktora i destruktora. Kada se knjižnica učitava/istovaruje, program za dinamičko učitavanje provjerava postoje li takvi odjeljci i ako postoje, poziva funkcije navedene u njima. Vrijedi spomenuti nekoliko točaka u vezi s tim: 1. __atribut__((konstruktor)) pokreće se kada se dijeljena biblioteka učitava obično tijekom pokretanja programa. 2. __atribut__((destruktor)) pokreće se kada se dijeljena biblioteka istovaruje obično pri izlasku iz programa. 3. Dvije zagrade vjerojatno služe za razlikovanje od poziva funkcija. 4. __atribut__ je sintaksa specifična za GCC; nije funkcija ili makro. Kod vozača : 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  
Napravi kviz