এখানে আমরা দেখব কীভাবে একটি প্রোগ্রাম লিখতে হয় যেখানে দুটি ফাংশন থাকে — একটা main() ফাংশনের আগে এক্সিকিউট হবে এবং অন্যটি main() ফাংশন শেষ হয়ার পরে। এই ফিচারগুলো প্রোগ্রাম শুরু হওয়ার আগে স্টার্টআপ টাস্ক এবং শেষ হয়ার পর ক্লিন-আপ টাস্ক করার জন্য ব্যবহৃত হয়।
এজন্য ফাংশনগুলোতে অ্যাট্রিবিউট যোগ করতে হয়। Constructor অ্যাট্রিবিউট থাকলে সেটি main()-এর আগে রান হবে, আর Destructor অ্যাট্রিবিউট থাকলে main()-এর পর রান হবে।
এখানে GCC-এর __attribute__() ফাংশন ব্যবহার করা হয়েছে। দুটি অপশন ব্যবহার করা হয়েছে: Constructor এবং Destructor। __attribute__((constructor)) সিনট্যাক্স প্রোগ্রাম শুরু হলে ফাংশন এক্সিকিউট করে, আর __attribute__((destructor)) সিনট্যাক্স main() শেষ হলে ফাংশন এক্সিকিউট করে। নিচে উদাহরণ দেওয়া হলো:
উদাহরণ
#include <stdio.h>
void before_main() __attribute__((constructor));
void after_main() __attribute__((destructor));
void before_main() {
printf("This is executed before main.\n");
}
void after_main() {
printf("This is executed after main.");
}
int main() {
printf("Inside main\n");
return 0;
}
আউটপুট
This is executed before main. Inside main This is executed after main.