__attribute__((konstruktor)) és __attribute__((destructor)) szintaxis C-ben

Írjon két függvényt C nyelven a GCC fordítóval, amelyek közül az egyik a fő függvény előtt, a másik pedig a fő függvény után fut le. GCC-specifikus szintaxisok : 1. __attribútum__((konstruktor)) szintaxis: Ez az adott GCC szintaxis, ha egy függvénysel együtt használjuk, ugyanazt a funkciót hajtja végre a program indításakor, azaz azelőtt fő() funkció. 2. __attribútum__((pusztító)) szintaxis: Ez a bizonyos GCC-szintaxis, ha egy függvénnyel együtt használjuk, ugyanazt a funkciót hajtja végre közvetlenül a program befejezése előtt az _exit-en keresztül, azaz azután fő() funkció. Magyarázat : A konstruktorok és destruktorok működése az, hogy a megosztott objektumfájl speciális szakaszokat tartalmaz (.ctors és .dtors az ELF-en), amelyek hivatkozásokat tartalmaznak a konstruktor és destructor attribútumokkal megjelölt függvényekre. A könyvtár betöltésekor/kitöltésekor a dinamikus betöltő program ellenőrzi, hogy léteznek-e ilyen szakaszok, és ha igen, meghívja a benne hivatkozott függvényeket. Ezekkel kapcsolatban érdemes megjegyezni néhány pontot: 1. __attribútum__((konstruktor)) akkor fut, amikor egy megosztott könyvtár betöltődik, általában a program indításakor. 2. __attribútum__((pusztító)) akkor fut, amikor a megosztott könyvtárat általában a program kilépésekor ürítik ki. 3. A két zárójel feltehetően azért van, hogy megkülönböztesse őket a függvényhívásoktól. 4. __attribútum__ egy GCC-specifikus szintaxis; nem függvény vagy makró. Driver kód : 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  
Kvíz létrehozása