ในที่นี้เราจะมาดูวิธีการเขียนโค้ดที่มีฟังก์ชันสองฟังก์ชัน และฟังก์ชันหนึ่งจะถูกเรียกใช้งานก่อนฟังก์ชันหลัก และฟังก์ชันอื่นจะถูกเรียกใช้หลังจากฟังก์ชันหลัก คุณลักษณะเหล่านี้ใช้ในการทำงานเริ่มต้นบางอย่างก่อนที่จะดำเนินการหลัก และงานล้างข้อมูลบางส่วนหลังจากดำเนินการหลัก
ในการทำงานนี้ เราต้องใส่แอตทริบิวต์สำหรับฟังก์ชันทั้งสองนี้ เมื่อแอ็ตทริบิวต์เป็นแอ็ตทริบิวต์ constructor แอ็ตทริบิวต์จะถูกดำเนินการก่อน main() และเมื่อแอ็ตทริบิวต์เป็นประเภท 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.");
}
main() {
printf("Inside main\n");
} ผลลัพธ์
This is executed before main. Inside main This is executed after main.