logo

__attribute__((المنشئ)) و __attribute__((destructor)) بناء الجملة في C

اكتب وظيفتين في لغة C باستخدام برنامج التحويل البرمجي لدول مجلس التعاون الخليجي، حيث يتم تنفيذ إحداهما قبل الوظيفة الرئيسية ويتم تنفيذها الأخرى بعد الوظيفة الرئيسية. تركيب الجمل الخاصة بدول مجلس التعاون الخليجي : 1. __السمة__ ((المنشئ)) بناء الجملة: بناء جملة دول مجلس التعاون الخليجي هذا عند استخدامه مع وظيفة ينفذ نفس الوظيفة عند بدء تشغيل البرنامج، أي قبل رئيسي() وظيفة. 2. __السمة__((المدمرة)) بناء الجملة: بناء جملة مجلس التعاون الخليجي هذا عند استخدامه مع وظيفة ينفذ نفس الوظيفة قبل أن ينتهي البرنامج من خلال _exit، أي بعد رئيسي() وظيفة. توضيح : الطريقة التي تعمل بها المنشئات والمدمرات هي أن ملف الكائن المشترك يحتوي على أقسام خاصة (.ctors و.dtors على ELF) والتي تحتوي على مراجع للوظائف المميزة بسمات المنشئ والمدمر على التوالي. عندما يتم تحميل/إلغاء تحميل المكتبة، يتحقق برنامج التحميل الديناميكي من وجود هذه الأقسام وإذا كان الأمر كذلك يستدعي الوظائف المشار إليها فيها. تجدر الإشارة إلى بعض النقاط المتعلقة بهذه الأمور: 1. __السمة__ ((المنشئ)) يتم تشغيله عند تحميل مكتبة مشتركة عادةً أثناء بدء تشغيل البرنامج. 2. __السمة__((المدمرة)) يتم تشغيله عندما يتم إلغاء تحميل المكتبة المشتركة عادةً عند خروج البرنامج. 3. من المفترض أن يتم تمييز القوسين عن استدعاءات الوظائف. 4. __يصف__ عبارة عن بناء جملة خاص بدول مجلس التعاون الخليجي؛ وليست دالة أو ماكرو. رمز السائق : 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('nI am in main'); } // This function is assigned to execute before // main using __attribute__((constructor)) void calledFirst() {  printf('nI am called first'); } // This function is assigned to execute after // main using __attribute__((destructor)) void calledLast() {  printf('nI am called last'); } 
Output:
I am called first I am in main I am called last 
إنشاء اختبار