__attribute__((konstruktorius)) ir __attribute__((naikintojas)) sintaksės C

Parašykite dvi funkcijas C, naudodami GCC kompiliatorių, iš kurių viena vykdoma prieš pagrindinę funkciją, o kita - po pagrindinės funkcijos. GCC specifinės sintaksės : 1. __atributas__((konstruktorius)) sintaksė: ši konkreti GCC sintaksė, kai naudojama su funkcija, atlieka tą pačią funkciją paleidžiant programą, t. y. prieš pagrindinis () funkcija. 2. __atributas__((naikintojas)) sintaksė: ši konkreti GCC sintaksė, kai naudojama su funkcija, atlieka tą pačią funkciją prieš pat programos pabaigą per _exit, t. y. po pagrindinis () funkcija. Paaiškinimas : Konstruktoriai ir naikintuvai veikia taip, kad bendrai naudojamo objekto faile yra specialių skyrių (.ctors ir .dtors ELF), kuriuose yra nuorodų į funkcijas, pažymėtas atitinkamai konstruktoriaus ir naikintojo atributais. Kai biblioteka įkeliama / iškraunama, dinaminio įkėlimo programa patikrina, ar tokių skyrių yra, ir, jei taip, iškviečia juose nurodytas funkcijas. Verta atkreipti dėmesį į keletą punktų: 1. __atributas__((konstruktorius)) veikia, kai bendrai naudojama biblioteka paprastai įkeliama programos paleidimo metu. 2. __atributas__((naikintojas)) veikia, kai bendrai naudojama biblioteka paprastai iškraunama išėjus iš programos. 3. Du skliaustai tikriausiai skirti juos nuo funkcijų iškvietimų. 4. __atributas__ yra GCC specifinė sintaksė; ne funkcija ar makrokomanda. Vairuotojo kodas : 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  
Sukurti viktoriną